我的擴展正在修改一些URL。它工作正常,但現在我想檢查是否在設置中啓用修改或不。chrome ... addListener,如何等待chrome.storage.sync.get?
chrome.webRequest.onBeforeRequest.addListener
(
modifyUrl,
{urls: ['http://somewebsite/*'], types: ['main_frame']},
['blocking']
);
問題是我不知道如何等待值。我必須在退出modifyUrl
之前獲得設置。這可能嗎?如果這是C#,我可能會在調用sync.get
之後使用ManualResetEvent
或其他東西。
function modifyUrl(details)
{
chrome.storage.sync.get("someSetting",
function (data)
{
//I can get the setting here
}
);
//how to know the setting here?
if(enabled in the setting)
{
return {redirectUrl: some different url};
}
}
看起來你需要一個回調或承諾等待異步操作,然後*然後*從函數返回 – adeneo
這是一個想法 - > https://jsfiddle.net/adeneo/69pskkad/ – adeneo
@adeneo如果在註冊事件偵聽器後設置更改? – qxz