我正在尝试在内容脚本和扩展名之间传递消息
这是我的内容脚本
chrome.runtime.sendMessage({type: "getUrls"}, function(response) {
console.log(response)
});
在后台脚本中
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.type == "getUrls"){
getUrls(request, sender, sendResponse)
}
});
function getUrls(request, sender, sendResponse){
var resp = sendResponse;
$.ajax({
url: "http://localhost:3000/urls",
method: 'GET',
success: function(d){
resp({urls: d})
}
});
}
现在,如果我在getUrls
函数中的ajax调用之前发送响应,则响应已成功发送,但是在ajax调用的成功方法中,当我发送响应时它不会发送响应,当我进入调试时,我可以看到该sendResponse
函数代码中的端口为null 。
存储对sendResponse参数的引用至关重要。没有它,响应对象将超出范围,无法被调用。感谢您的代码,这些代码提示我要解决自己的问题!
—
TrickiDicki
也许另一种解决方案是使用Promise将所有内容包装在异步函数中,并为异步方法调用await?
—
Enrique