javascript中的评估顺序

时间:2011-06-02 21:54:38

标签: javascript google-chrome

我对javascript中的评估顺序感到困惑。例如,这是我写的代码

this.getTabUrl=function()
{
    this.logToConsole("1"+"getTabUrl is called");

    var myUrl
    chrome.tabs.getSelected(null, function(tab)
    {
        myUrl = tab.url;
        console.log("2"+tab.url);
        console.log("3"+myUrl);
        //this.parent.logToConsole(tabUrl);

    });

    this.tabUrl=myUrl;

    this.logToConsole("3.1"+myUrl);
    this.logToConsole("4"+this.tabUrl);

    return myUrl;

}   

当我调用此函数时,这是我得到的输出

> 1getTabUrl is called
> 3.1undefined 
> 4undefined 
> 2undefined

3.1之前如何评估3.1和4。

1 个答案:

答案 0 :(得分:3)

传递给chrome.tabs.getSelected()的函数是异步执行的。

您需要将需要传递的所有内容放入回调函数内的回调中。请注意,这意味着您不能return来自外部函数的值,它依赖于回调中的某些内容。您需要接受一个回调参数,并使用返回值调用它。