Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从内部回调返回webRequest_Javascript_Asynchronous_Google Chrome Extension_Promise_Async Await - Fatal编程技术网

Javascript 如何从内部回调返回webRequest

Javascript 如何从内部回调返回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.

我向WebRequestAPI添加了一个eventListener,在其回调函数中,我调用存储API来检查一个值。如何从存储API内部响应WebRequestAPI

    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是什么意思?