Javascript 循环中的异步函数-使变量在内部函数中可用
我尝试在循环中执行异步调用,使用返回的结果,并使变量“q”可用于内部函数 如何使q对内部函数可用(与异步调用之前的值相同)Javascript 循环中的异步函数-使变量在内部函数中可用,javascript,loops,promise,Javascript,Loops,Promise,我尝试在循环中执行异步调用,使用返回的结果,并使变量“q”可用于内部函数 如何使q对内部函数可用(与异步调用之前的值相同) var-oController=this; 对于(var q=0;q
var-oController=this;
对于(var q=0;q
尝试以下方法:
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)
}
});
}
var-oController=this;
对于(var q=0;q
q
将被定义,其值将是dataArray.length
@Pointy感谢您的回复,我可能需要重新措辞-我在调用异步callUselet
时正在寻找q,而不是var
@neeko将此函数(flag){替换为(flag)=>{可能会解决这个问题。@FahadNisar arrow函数保留this
上下文,但不保留循环中的变量。将var
替换为let
是解决这个问题的方法,正如@Erazihel所提到的。谢谢!这就是我一直在寻找的!
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)
}
});
}