如何使用chrome.runtime.onMessage.addListener参数作为全局变量?

时间:2018-01-24 07:36:35

标签: javascript google-chrome google-chrome-extension google-chrome-app

我试图让chrome.runtime.onMessage.addListener参数失效。但它只是在方法内部工作。

chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){
        alert(response); // its ok!
});

但是当我试图将它声明为外部变量时,它不起作用。

chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){
        response = response;
});

alert(response); // Underfined;(

1 个答案:

答案 0 :(得分:0)

问题的核心是异步与同步方法

chrome-extension tutorial中,它有:

  

chrome。* API中的大多数方法都是异步的:它们会立即返回,而不必等待操作完成。如果您需要知道该操作的结果,那么您将回调函数传递给该方法。在该方法返回后的某个时间,该回调将在稍后(可能更晚)执行。

关于这个问题,如果您编写如下代码:



chrome.runtime.onMessage.addListener(function(response, sender, sendResponse){
        response = response;
});

alert(response);




chrome.runtime...alert(...)将同时执行,alert函数无法获取参数response,因为chrome.runtime...没有&#39 ; t完成执行,你得到 undefined 结果。您应该像在第一个代码块中一样在回调函数中编写代码。

您可以从教程的example获得更多灵感。

所以在这种情况下,我认为你的问题更多是关于执行方法而不是功能范围。希望这会有所帮助。