Javascript异步等待

时间:2016-10-06 12:54:01

标签: javascript node.js for-loop asynchronous electron

我试图运行异步for循环,它运行同步函数然后等待一段时间。我的代码是:

function loopExec (i,imax, execFunc,param1) { 
    execFunc(i,param1);//Launch synchronous function which takes some time
    var y=i+1; 
    if (y < imax) {   //  if the counter < imax, call the loop function
        setTimeout(function () {    //  call a 0.1s setTimeout when the loop is called
            loopExec(y,imax, execFunc,param1);             //  ..  again which will trigger another call
        }, 100);
    }
    else if(y==imax){
        anotherFunction(param1);// The loop is over, clean up and log
    }
}

我想要的行为是: execFunc(1) - &gt;等待100ms - &gt; execFunc2-&GT;等待... A bit like this

我所拥有的行为是execFunc1,execFunc2等,所有这些都以100毫秒的间隔启动,而不等待前一个的完成,导致读/写冲突,因为这些函数与文件交互。

我不知道这与它有什么关系,但我使用的是电子/ nodeJS。

2 个答案:

答案 0 :(得分:0)

T.J。 Crowder是对的,错误不在这个函数中,而是在它调用的函数中。

此代码执行预期的操作。

答案 1 :(得分:-2)

如果你想做这样的事情

enter image description here

此代码将有效。

var i = 0;
var imax = 10;

function myFunction() {
  console.log('balbla', i);
  i+=1;
  if(i !== imax) setTimeout(myFunction, 100);
}

setTimeout(myFunction, 100);