从回调函数中获取参数

时间:2013-01-27 13:26:16

标签: javascript google-chrome-extension

我有一个看起来像这样的函数:

main.add = function(){
    var newTabId;
    chrome.tabs.create({"url":"enter.html","active":true},
        function(tab) {
            newTabId = tab.id;
        }
    );
    console.log(newTabId);
}

但是当newTabId打印到控制台时,chrome.tabs.create函数尚未运行,因此var为undefined

有没有办法确保chrome命名空间中的代码在运行下面的任何内容之前完成?

1 个答案:

答案 0 :(得分:0)

首先,执行newTabId global,在函数外定义它。你的两个“newTabId”属于不同的命名空间。

Secondo,chrome.tabs.create中的函数将在主代码完成后启动。这是异步编程。 chrome API都是异步的,所以,习惯它,遗憾的是没有解决方法。

如果您想开始思考异步,我建议将promise与jQuery deferred一起使用。