-3

我正在尝试学习如何编写 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

4 回答 4

1

只需在回调中使用 myArray 即可:

chrome.windows.create(
    newWindow,
    function(t)
    {
        myArray.push(t);

        //Do your length check here
        if ( myArray.length === completeLength ) doMyAction( myArray );
    }
);
于 2013-10-19T06:30:40.923 回答
0

使用延迟功能执行。在我的项目中,我在这种情况下使用了相同的方法。

于 2013-10-17T16:53:27.763 回答
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
}
于 2013-10-17T16:57:31.117 回答
-1

var t=setTimeout(function(){alert("10 分钟完成")},10000)

于 2013-10-17T16:56:01.627 回答