【发布时间】:2017-12-22 00:08:12
【问题描述】:
我正在尝试在循环中进行异步调用,使用返回的结果并使变量 '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)
}
});
}
【问题讨论】:
-
q将被定义,其值为dataArray.length。 -
@Pointy 感谢您的回复,我可能需要重新措辞 - 我在调用异步调用时正在寻找 q
-
使用
let而不是var -
@neeko 用 (flag) => { 替换这个 function(flag){ 可能会解决问题。
-
@FahadNisar 箭头函数保留
this上下文,但不保留循环中的变量。正如@Erazihel 所提到的,将var替换为let是可行的方法。
标签: javascript loops promise