为什么我在一次性请求中需要“sendResponse”?

时间:2017-08-27 18:37:59

标签: javascript google-chrome-extension

我正在查看此页面上的代码演示: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) {,则扩展程序不会传递消息。所以基本上我想知道为什么我需要那个参数,即使我不使用它。感谢

1 个答案:

答案 0 :(得分:2)

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

确保排除sendResponse回调参数:

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

删除你的电话:

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

最后,不要试图从响应中记录告别,因为它不存在:

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