此问题已在此处有答案:
sendResponse not waiting for async function or Promise's resolve [duplicate](1个答案)
昨天关门了。
下面是我的代码片段。
如何将响应发送到A或B或C位置?
sendResponse似乎只能在D中工作,而不是在A、B或C中,因为ABC在async await方法之后。
// in background.js, add listeners
chrome.runtime.onMessage.addListener(
async function (request, sender, sendResponse) {
if (request.type === 'get-text') {
// sendResponse({abc:'abc'}) // works here. D
const tab = await getTab();
// sendResponse({bcd:'bcd'}) // doesn't work here. C
const data = await chrome.scripting.executeScript({
target: { tabId: tab.id },
function: () => {
// get text from dom
return text;
},
args: []
}, (bundleData) => {
// sendResponse({test:'test'}) // doesn't work here. B
});
// sendResponse({efg:'efg'}) // doesn't work here. A
}
}
个字符
我的Chrome扩展是基于React 18构建的。使用manifest v3
1条答案
按热度按时间jogvjijk1#
要在chrome扩展中发送响应,您可以使用
sendResponse
函数。虽然它有一些限制,例如它只能从侦听器函数中调用,并且每条消息只能调用一次,但它可以帮助像您这样的基本程序。字符串