我有两个变量被设置为函数的“返回值”,这些函数是用于获取标签页的URL和实际标签页对象的引用,并将它们存储在变量中。我有一些代码:
function init(){
var url = getUrl();
var tab = getTab();
}
function getUrl(){
var tablink;
chrome.tabs.query({currentWindow: true, active: true},function(tabs){
tablink = tabs[0].url;
return tablink;
});
}
function getTab(){
var tab;
chrome.tabs.query({currentWindow: true, active: true},function(tabs){
tab = tabs[0];
});
return tab;
}
为什么URL未定义,尽管我从回调函数中返回了URL,但当我从回调函数外部返回tab时,它可以正常返回,就像这是同步调用一样。我在调试器中有一个关于这种现象的截图。我正在尽力学习如何处理chrome中的异步方法,但这非常令人困惑。有人能解释一下这种行为吗?