请帮我删除以下代码中的setTimeout
var fileArray=ReadDir.readFilesFromDirectory(full_path);
setTimeout(function(){
setTimeout(function(){fileArray.forEach(function (val,index,array) {
/* time taken statements
Define arg1*/
` setTimeout(function () {
/* time taken statements
Define arg2,arg3*/
ConnectToFirebase.linkToFirebase(arg1,arg2,arg3);
setTimeout(function() {
process.exit(0);},10000) ;
},500 );//function 4
});//function 3
},500);//function 2
},500);//function 1
我希望在完成之前的函数()之后执行以下函数,即逐个执行 因为它在前一个函数需要更多时间执行时会产生问题
答案 0 :(得分:0)
当你这样做时:
AsyncCall();
console.log("t");
浏览器不会等到AsyncEvent完成。他继续前进,并在另一个例程中处理该功能。
|
|
AsyncCall(); ---------->finished
| ( | ) (what we want)
\/ ( | )
console.log("test"); <-----|
因为你不能等到事件结束后才会发明回调和事件处理程序。 这就是回调的样子:
function async(callback){
//function executes
callback();
//the passed code is executed
}
要使用回调运行该功能,只需执行以下操作:
async(function(){//code ran later});
事件仲裁者几乎相同:
window.onload=function(){}
因为我没有使用node.js,我无法告诉你异步事件是如何工作的。深入了解文档并找到它:)