Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 没有得到Chrome扩展的响应_Javascript_Google Chrome Extension_Callback - Fatal编程技术网

Javascript 没有得到Chrome扩展的响应

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

我正在尝试从sendResponse获取对chrome.runtime.sendMessage的响应,但它始终显示未定义,下面是我的代码:

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 指示您希望异步发送响应(这将保持 消息通道向另一端打开,直到发送响应结束 打电话)


是的,这很有效,非常感谢……:)是的,这很有效,非常感谢……:)