我正在做一個chrome擴展,通過彈出窗口阻止添加到本地存儲的特定站點。我認爲這個代碼中的問題是,它在chrome.storage.local.get的回調完成之前返回。如何在返回之前等待一段時間?同步執行異步功能
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
var matched = false;
chrome.storage.local.get ('blocked_sites', function (sites) {
var bsites = sites.blocked_sites;
for (i = 0, size = bsites.length; i < size; i++) {
if (details.url.indexOf("://" + bsites[i] + "/") != -1) {
matched = true;
} // end if
} // end for
});
// WAIT HERE FOR VALUE OF MATCHED TO BE SET BY CALLBACK
return { cancel: matched };
},
{ urls: ["<all_urls>"] },
["blocking"]);
chrome.storage.local.set({'blocked_sites': [ 'www.topnotchdev.com'] }, null);
你不能讓它等待。您只能將代碼重寫爲異步。 – Bergi
是的,我試圖讓它通過使用循環等待,並阻止線程。告訴我如何重寫它? – mallaudin