将chrome.tabs.query放在函数中始终返回undefined

时间:2013-10-03 23:04:37

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

我正在制作一个Chrome扩展程序,它大量使用获取当前活动窗口中当前活动选项卡的ID。使用chrome.tabs.query缠绕一堆逻辑使我的代码变得混乱,但是将它放在它自己的函数中以返回当前选项卡总是返回undefined - 为什么?

function _getCurrentTab(){
    var theTab;
    chrome.tabs.query({active:true, currentWindow:true},function(tab){
        theTab = tab;
    });
    return theTab;
};
console.log(_getCurrentTab());

任何人都可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

chrome.tabs.query是异步的,因此您的返回在回调中的theTab = tab之前执行或者执行回调本身,所以请尝试:

function _getCurrentTab(callback){ //Take a callback
    var theTab;
    chrome.tabs.query({active:true, currentWindow:true},function(tab){
        callback(tab); //call the callback with argument
    });
};

_displayTab(tab){ //define your callback function
    console.log(tab);
 };

 _getCurrentTab(_displayTab); //invoke the function with the callback function reference