Chrome扩展程序等待标签创建和标签内的脚本(异步问题)

时间:2018-02-20 22:03:29

标签: javascript google-chrome-extension

我正在尝试创建制表符,然后再继续编写脚本,但我还没有找到合适的方法。

以下示例代码说明了我的问题:

for (x=0;x<5;x++)
{
console.log('start of my script');
chrome.tabs.create({ url: "myURL",  active: false }, function(tab) 
        { 
          console.log('Tab created: '+tab.id);
          // I do some scripting here
        }
console.log('end of my script');
}

当然,这里发生的是我看到: 我的脚本开始 我的剧本结尾 创建标签:...

我在调用选项卡创建时尝试使用“await”,但它不起作用,我无法删除回调,因为我需要它来获取新选项卡的ID。

我应该以不同的方式使用回电吗?或者还有另一种方法可以实现这一目标吗?

谢谢! 劳伦

1 个答案:

答案 0 :(得分:1)

如果用position: absolute包装函数并异步调用异步代码,则异步代码更易于读写。

我认为有一个库会将所有Chrome API与Promise版本捆绑在一起,但一次只能执行一项功能并不是很多代码。

Promise

可以在function chromeTabsCreateAsync(createProperties) { return new Promise((resolve, reject) => { chrome.tabs.create(createProperties, tab => { if (chrome.runtime.lastError) { reject(new Error(chrome.runtime.lastError)); } else { resolve(tab); } }); }); } 函数内部使用await调用此函数,并且循环中的每次迭代都将暂停,直到值结算。

async