我正在做一个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