2011-06-02 106 views
0

我对javascript中的评估顺序感到困惑。对于恩,这是我写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和4 2

回答

3
前先评估

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

你需要把所有需要的东西都传递给回调函数内的回调函数。请注意,这意味着您不能从return获取来自外部函数的值,该函数依赖于回调中的某些内容。您需要接受一个回调参数,并用返回值来调用它。

+0

谢谢。这help.s我只是想返回Url,getTabUrl函数,你能告诉我如何去做 – 2011-06-02 21:59:04

+0

看到我的最后两句话。 – ThiefMaster 2011-06-02 22:00:19

+0

你能指点我一个例子吗?我是新来的JavaScript – 2011-06-02 22:07:06