【发布时间】:2013-10-17 16:50:18
【问题描述】:
我正在尝试学习如何编写 chrome 扩展程序。但是我在异步编程方面没有很多经验,这给我带来了问题。
chrome.windows.create(newWindow, function(t){myArray.push(t);});
// When I call myArray next it has not yet updated.
我将如何解决这个问题?
我有一些想法
放入一个while循环:
int tempLength = myArray.length;
chrome.windows.create(newWindow, function(t){myArray.push(t);});
While (tempLength = myArray.length)
{
//nothing
}
// call myArray
或在 chrome.windows.create 之后添加 10 毫秒的延迟
什么最有效?是否有内置函数来处理这种情况?
【问题讨论】:
-
循环永远不会退出。正如您在上一个问题中所解释的,在浏览器返回主事件循环之前不会创建窗口。
-
代码看起来不是很javascripty
-
任何依赖于窗口创建的东西都应该在回调函数中。你已经在另一个问题中被告知过。
-
另外,循环条件使用
=而不是==或===,这是一个赋值。无论数组做什么,这始终是正确的。
标签: javascript asynchronous google-chrome-extension google-chrome-app