在javascript中完成以前的函数后执行函数

时间:2016-08-08 15:57:13

标签: javascript node.js firebase firebase-realtime-database

请帮我删除以下代码中的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

我希望在完成之前的函数()之后执行以下函数,即逐个执行 因为它在前一个函数需要更多时间执行时会产生问题

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,我无法告诉你异步事件是如何工作的。深入了解文档并找到它:)