0
我真的不明白回調函數,這可能是我得到的問題的來源: 我有一個getCookies()函數,它的工作,但現在我移動它在background.js中,函數外部的變量仍然未定義。Chrome擴展程序/ Javascript:變量仍然undefined
只要看看:
function getCookies(domain, name, callback) {
chrome.cookies.get({"url": domain, "name": name}, function(cookie) {
if(callback) {
callback(cookie ? cookie.value : null);
}
});
}
var upw; //Passwort HASH
//USER PW Hash auslesen
getCookies("http://example.org/", "upw", function(id) {
if(id == null) {
upw= null;
}
else { upw = id;}
console.log("Func: "+upw);
});
console.log("Outside: "+upw);
控制檯會給我這樣的:
Outside: undefined
Func: 1234asdfqwertz5678
所以該函數將被exectued 「爲時已晚」。我不知道爲什麼,我不知道,如何解決這個問題!
由於getCookies是異步的,任何依賴'upw'的東西都必須在回調函數中完成,而不是在頂層。這就像使用AJAX。 – Barmar
@Barmar:可以設置getCookies同步嗎? – wernersbacher
可以做同步AJAX,我認爲它會同步設置cookie。不過,我不知道'chrome.cookies.get'是否提供了這樣的機制。 – Barmar