异步函数完成后如何使函数执行?

时间:2011-09-05 15:05:54

标签: javascript asynchronous

我有一个处理大量数据的函数,所以我正在异步处理数据以允许浏览器更新屏幕。但是,在异步函数完成其处理之后,我想调用另一个函数。这就是我试图做的事情。

function addObjects(){

object.setSrc(objFilename);
object2.setSrc(objFilname2);

} 

addObjects();

但是,顺序对于异步过程无关紧要。在第一个异步函数完成处理后如何调用第二个函数?

3 个答案:

答案 0 :(得分:1)

你不能在函数调用中添加回调吗?

因此:

function doSomethingIntensive( callback )
{
  //Do some stuff
  for(var i = 0; i < 10000; i++); //Something intensive

  //we're done, fire the callback
  if(callback)
    callback();
}

doSomethingIntensive( function()
{
 //And we're done, do some more
   doSomethingIntensive();
});

答案 1 :(得分:1)

如果您使用例如

setTimeout(process1, 200);

在函数process1()中处理异步数据,你可以调用process1()中的其他处理函数:

function process1() {
    // ... process data 1 here
    // when processing data 1 finished then process data 2
    process2();   
}

您还可以延迟拨打process2()

function process1() {
    // ... process data 1 here
    // when processing data 1 finished then process data 2 asynchronously, but after data 1
    setTimeout(process2, 200); 
}

答案 2 :(得分:0)

function addObjects(){
    object.setSrc(objFilename);
    object.addEventListener("onSrcSet", function() {
        object2.setSrc(objFilname2);
    }
} 

addObjects();

当然这意味着您为事件使用了正确的名称,而不是任意选择的"onSrcSet"

并且在谈到“第二个”和“第一个”时你的意思是那些函数调用。