循环中的异步函数 - 使内部函数

时间:2017-07-17 12:36:12

标签: javascript loops promise

我正在尝试在循环中进行异步调用,使用返回的结果并使变量' q'可用于内部功能。

如何使q可用于内部函数(具有与异步调用之前相同的值)?

var oController = this;
for (var q = 0; q < dataArray.length; q++) {
  var InspectionNo = dataArray[q].inspectionNo;

  //async call
  oController._validateInspection(InspectionNo)

    //returns flag
    .then(function(flag) {
      debugger;
      if (flag) {
        //q is not defined here
        oController._doSomething(q)
      }
    });
}

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

var oController = this;
for (var q = 0; q < dataArray.length; q++) {
            var InspectionNo = dataArray[q].inspectionNo;

            //async call
            Promise.all([oController._validateInspection(InspectionNo), q])

            //returns flag
            .then(function([flag, q]){
                    if(flag){
                        //q is not defined here
                        oController._doSomething(q)
                    }
                });
        }