当我从chrome api外部分配变量的值时遇到问题,如下例所示。
码:

var btnStatus;

chrome.runtime.sendMessage({jsBlocker: "check"}, function(response) {
 btnStatus = response.data;
});

alert(btnStatus );

输出:

最佳答案

sendMessage是异步的,这意味着它仅在准备就绪时才执行传递的回调,因此btnStatus = response.data;语句会花费一些时间。同样,由于它是异步的,因此下面的代码将不等待sendMessage并将继续运行,结果alert将为您显示btnStatus的初始值,即undefined。使用响应数据的所有代码都依赖于此回调。
您可以在回调中放入alert来测试即将到来的数据,然后对它进行所需的处理:

chrome.runtime.sendMessage({jsBlocker: "check"}, function(response) {
 btnStatus = response.data;
 alert(btnStatus);
});

关于javascript - 如何从Chrome API函数为外部变量赋值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28737329/

10-12 12:22