Javascript 如何从内部回调返回webRequest
我向WebRequestAPI添加了一个eventListener,在其回调函数中,我调用存储API来检查一个值。如何从存储API内部响应WebRequestAPIJavascript 如何从内部回调返回webRequest,javascript,asynchronous,google-chrome-extension,promise,async-await,Javascript,Asynchronous,Google Chrome Extension,Promise,Async Await,我向WebRequestAPI添加了一个eventListener,在其回调函数中,我调用存储API来检查一个值。如何从存储API内部响应WebRequestAPI chrome.webRequest.onBeforeRequest.addListener( async function(details) { console.log('from first callback'); await chrome.storage.sync.
chrome.webRequest.onBeforeRequest.addListener(
async function(details) {
console.log('from first callback');
await chrome.storage.sync.get('disabled', function (value) {
console.log('from inside of second callback');
if (value.disabled) {
console.log('returned false')
return { cancel: false } // this should return from the function (details) level
} else {
console.log('returned true')
return { cancel: true }
}
})
console.log('still from first')
},
{urls: [
"myurl"
]},
["blocking"]);
我听说过一些关于承诺的事,但我搞不懂。如何实现这一点?在Chrome中是不可能的,因为它在阻塞模式下的WebRequestAPI是同步的,这意味着您不能拥有异步侦听器,也不能返回承诺。唯一的解决方案是拥有一个全局变量,您将在扩展启动时进行更新,然后使用chrome.storage.onUpdated listener进行更新。IIRC存在现有答案,请尝试搜索。@wOxxOm IIRC是什么意思?