我正在看此页面上的代码演示:https://developer.chrome.com/apps/messaging

代码是这样的:

Content.js

chrome.runtime.sendMessage({greeting: "hello"}, function(response) {
    console.log(response.farewell);
});


Background.js

chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
    console.log(sender.tab ?
            "from a content script:" + sender.tab.url :
            "from the extension");
    if (request.greeting == "hello")
    sendResponse({farewell: "goodbye"});
 });


我最了解代码,但是我不了解的一件事是“ sendResponse”。如果删除sendResponse({farewell: "goodbye"});,代码仍然可以正常工作,这很好。但是,如果我从sendResponse删除function(request, sender, sendResponse) {,则扩展名不会随消息传递而传递。因此,基本上,我想知道为什么即使我不使用它也需要该参数。谢谢

最佳答案

如果您不打算使用sendResponse(),则不需要它。

确保排除sendResponse回调参数:

// no sendResponse arg
function(request, sender) {


并删除您的通话:

// remove this
sendResponse({farewell: "goodbye"});


最后,不要尝试记录响应的告别,因为它不会存在:

// remove this
console.log(response.farewell);

09-17 05:00