Chrome 尽管返回true,但在收到响应之前消息端口已关闭

zte4gxcn  于 2022-12-06  发布在  Go
关注(0)|答案(1)|浏览(220)

我从弹出窗口向后台发送一条消息,后台在收到消息时调用一个外部API,并根据该API的响应向弹出窗口发送一条消息。
波普特

chrome.runtime.sendMessage({
        message: "submit",
        payload: {
            transactions: usersTxs,
        }
        }, (response) => { ... do other stuff }

本底

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    if (request.message === 'submit'){
         fetch('https://example.com/api/submit'})
           .then((res) => {
                 sendResponse({ message: true })
                return true
            })
    }

然而,尽管设置返回true,我仍然得到以下错误:
第一次
我是不是做错了什么?
谢谢

w8biq8rn

w8biq8rn1#

你在错误的时间返回true--在稍后执行的异步处理程序中。移动你的return语句:

chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
    if (request.message === 'submit') {
         fetch('https://example.com/api/submit'})
             .then((res) => {
                 sendResponse({ message: true })
             })
         return true
    }

相关问题