从函数返回一个承诺,该函数从 chrome 扩展的后台 JS 获得响应

Returning a promise from a function that gets a response from the background JS of chrome extension

因此,在 chrome 扩展的 CORB 问题之后,我将 api 调用迁移到后台脚本,并使用来自后台脚本的回调来发送 JSON.[=12 的响应=]

所以我对我从回调中收到的响应有疑问,我希望它 return 它。

async function request (path, apiToken, options) {
  chrome.runtime.sendMessage({type: "request", path:path, apiToken:apiToken, options:options}, (all) => {
    return Promise.resolve(all.json )
  })
}

我调用请求 => 它转到后台 => 后台 return 响应 => 然后请求函数应该 return 一个承诺。 我卡在了最后一步,因为我无法从回调中 return 它,

Return 新 Promise,在你的 sendMessage 回调中解决它

async function request (path, apiToken, options) {
  return new Promise(function(resolve, reject) {
      chrome.runtime.sendMessage({type: "request", path:path, apiToken:apiToken, options:options}, (all) => {
        resolve(all.json)
      })
}