我有一个处理大量数据的函数,所以我正在异步处理数据以允许浏览器更新屏幕。但是,在异步函数完成其处理之后,我想调用另一个函数。这就是我试图做的事情。
function addObjects(){
object.setSrc(objFilename);
object2.setSrc(objFilname2);
}
addObjects();
但是,顺序对于异步过程无关紧要。在第一个异步函数完成处理后如何调用第二个函数?
答案 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"
。
并且在谈到“第二个”和“第一个”时你的意思是那些函数调用。