0

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

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 命名空间中的代码在运行它下面的任何内容之前完成?

4

1 回答 1

0

首先,做 newTabId 全局,在函数之外定义它。您的两个“newTabId”属于不同的命名空间。

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

如果你想开始考虑异步,我推荐使用带有 jQ​​uery 的deferred的promise

于 2013-01-29T11:50:07.260 回答