等待在Javascript中的for循环中执行函数?

时间:2016-02-02 18:10:12

标签: javascript jquery ajax for-loop asynchronous

我有一个类似于以下内容的脚本:

function1() {
    for(i < 5) {
        function2(i);
    }
}

function2(i) {
    $jqueryHere;
}

基本上,我有一个for循环,它会调用第二个函数一定次数。但是,第二个函数只包含jQuery,我不知道如何强制for循环等待function2()的执行完成,然后继续进行下一次迭代并增加变量{{1 }}

编辑:这是第二个函数中的特定jQuery代码(我使用typed.js在我的网站上写出行):

i

1 个答案:

答案 0 :(得分:0)

编辑:我建议只使用promises,然后调用then()五次,但是如果你想调整你想要调用异步函数的次数,你需要跟踪迭代异步调用之间的计数。您可以通过存储在外部作用域中进行的调用次数来完成此操作,或者您可以通过将其作为参数传递给我,如下所示。

function f1(i) { 
  if (!i || i < 5) // nullguard the parameter so function can be called as 'f1()'
    f2(i || 0);
}

function f2(i) {
  $ajax.onComplete = function () { f1(i+1); }
  $doAjax();
}

将计数器存储在外部作用域中的示例如下:

(function () {
  var count = 0;

  function f1() {
    if (count < 5) 
      f2();
  }

  function f2() {
    $ajax.onComplete = function () { count++; f1(); }
    $doAjax();
  }
})()