在侦听器中使用等待时如何避免出现“在收到响应之前关闭消息端口”的错误

时间:2019-01-03 06:12:56

标签: google-chrome-extension chrome-extension-async

我正在使用节点模块“ chrome-extension-async”编写chrome扩展,并在后台的侦听器中使用// content.js const package = await chrome.runtime.sendMessage({param: ...}) console.log(package) // background.js chrome.runtime.onMessage.addListener(async (request, sender, sendResponse) => { const value = await doIOOperation(); sendResponse(value); }) 时遇到问题。

将被注入到页面中的content.js将向后台发送一条消息,要求它执行一些异步的IO操作:

{{1}}

但是,chrome会报告如下错误:

  

未捕获(承诺)错误:在收到响应之前,消息端口已关闭。

我认为在侦听器中使用async / await时一定会有一些冲突,有人知道如何解决此问题吗?

1 个答案:

答案 0 :(得分:3)

const asyncFunctionWithAwait = async (request, sender, sendResponse) => {...}

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    asyncFunctionWithAwait(request, sender, sendResponse)

    return true
})

为我工作