我正在尝试学习如何编写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毫秒的延迟什么效果最好?是否存在处理这种情况的功能?
答案 0 :(得分:1)
只需在回调中使用myArray:
chrome.windows.create(
newWindow,
function(t)
{
myArray.push(t);
//Do your length check here
if ( myArray.length === completeLength ) doMyAction( myArray );
}
);
答案 1 :(得分:0)
使用延迟功能执行。我在我的项目中使用了相同的条件。
答案 2 :(得分:0)
就个人而言,我建议不要使用间隔来轮询新项目。将其作为回调的一部分。
var myArray = [];
chrome.windows.create(newWindow,
function(t){
myArray.push(t);
processNewItem(t);
});
// Do not continue code execution at this point. Let the callback initiate the processing.
function processNewItem(t){
//do whatever in here
}
答案 3 :(得分:-1)
var t = setTimeout(function(){alert(“10分钟完成”)},10000)