Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环中的异步函数-使变量在内部函数中可用_Javascript_Loops_Promise - Fatal编程技术网

Javascript 循环中的异步函数-使变量在内部函数中可用

Javascript 循环中的异步函数-使变量在内部函数中可用,javascript,loops,promise,Javascript,Loops,Promise,我尝试在循环中执行异步调用,使用返回的结果,并使变量“q”可用于内部函数 如何使q对内部函数可用(与异步调用之前的值相同) var-oController=this; 对于(var q=0;q

我尝试在循环中执行异步调用,使用返回的结果,并使变量“q”可用于内部函数

如何使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感谢您的回复,我可能需要重新措辞-我在调用异步callUse
let
时正在寻找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)
                    }
                });
        }