Javascript 没有得到Chrome扩展的响应
我正在尝试从sendResponse获取对chrome.runtime.sendMessage的响应,但它始终显示未定义,下面是我的代码:Javascript 没有得到Chrome扩展的响应,javascript,google-chrome-extension,callback,Javascript,Google Chrome Extension,Callback,我正在尝试从sendResponse获取对chrome.runtime.sendMessage的响应,但它始终显示未定义,下面是我的代码: chrome.runtime.sendMessage(JSON.stringify(contact), function(response) { console.log('Response: ', response); // This is showing undefined }); chrome.runtime.onMessage.addList
chrome.runtime.sendMessage(JSON.stringify(contact), function(response) {
console.log('Response: ', response); // This is showing undefined
});
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
contact.addContact(request, function() {
sendResponse({success: 'true'});
});
});
因此,当我传递应该在chrome.runtime.sendMessage的回调中接收的sendResponse({success:true})时,它显示的是未定义的。问题可能是由于
contact.addContact
是异步的。这意味着侦听器在调用sendResponse
之前结束。像这样从侦听器返回true
应该可以修复它:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
contact.addContact(request, function() {
sendResponse({success: 'true'});
});
return true;
});
从:
发送响应:
函数在有响应时调用(最多一次)。争论
应该是任何JSON ifiable对象。如果你有
同一文档中有多个onMessage侦听器,然后只有一个
可能会发送响应事件发生时,此函数无效
侦听器返回,除非从事件侦听器返回true
指示您希望异步发送响应(这将保持
消息通道向另一端打开,直到发送响应结束
打电话)
此问题可能是由
contact.addContact
异步引起的。这意味着侦听器在调用sendResponse
之前结束。像这样从侦听器返回true
应该可以修复它:
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
contact.addContact(request, function() {
sendResponse({success: 'true'});
});
return true;
});
从:
发送响应:
函数在有响应时调用(最多一次)。争论
应该是任何JSON ifiable对象。如果你有
同一文档中有多个onMessage侦听器,然后只有一个
可能会发送响应事件发生时,此函数无效
侦听器返回,除非从事件侦听器返回true
指示您希望异步发送响应(这将保持
消息通道向另一端打开,直到发送响应结束
打电话)
是的,这很有效,非常感谢……:)是的,这很有效,非常感谢……:)