我需要获取选项卡的当前URL才能解析它。我写了以下内容但后来遇到了问题。最后一行中的console.log始终先运行,而不是所需的功能。是什么原因造成的?
var tabURL;
chrome.tabs.query({
active: true,
currentWindow: true
}, function(tabs) {
tabURL = tabs[0].url;
console.log(tabURL);
});
console.log("Why does this run first?");

答案 0 :(得分:0)
那是因为异步执行。当JavaScript等待chrome API时,控制台会继续并记录您的消息。要解决此问题,您可以在回调中添加回调。
var tabURL;
chrome.tabs.query({
active: true,
currentWindow: true
}, function(tabs) {
tabURL = tabs[0].url;
console.log(tabURL);
console.log("I execute second!")
});
因此,只要您在回调中使用URL放置代码,它就可以正常工作。