暂停javascript直到执行了一个函数

时间:2013-10-17 16:50:19

标签: javascript asynchronous google-chrome-extension google-chrome-app

我正在尝试学习如何编写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毫秒的延迟

什么效果最好?是否存在处理这种情况的功能?

4 个答案:

答案 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)