在我的eventPage.js
中(背景,持续时间为false):
chrome.runtime.onMessage.addListener(async function(request, sender, sendResponse) {
await new Promise((resolve, reject) => {
chrome.downloads.search({id: files[i]}, function (item) {
sendfiles.push(item[0].id);
resolve();
});
});
console.log(sendfiles); // contains (item[0].id), means it did wait.
sendResponse("hello"); // Should send hello back
return true;
});
在我的popup.js
中:
chrome.runtime.sendMessage("",(response) => {
alert(response); // alerts undefinded instead of hello
});
我的错误:Unchecked runtime.lastError: The message port closed before a response was received.
如代码注释中所述,它应该以popup.js
响应"hello"
的请求,但是由于它在Promise
中等待,所以我得到了错误,并且response
变成了undefinded
在我可以sendResponse
我的"hello"
之前(我想这是正在发生的事情。)
在我的eventPage.js(background,persistent = false)中:chrome.runtime.onMessage.addListener(异步函数(request,sender,sendResponse){等待新的Promise((resolve,reject)=> {...
除非事件侦听器返回,否则此函数将变为无效,除非您从事件侦听器返回true表示您希望异步发送响应(这将使消息通道向另一端开放,直到调用sendResponse为止。]]