如何在 ajax 请求中按索引访问客户数组

How to access customer array by index in ajax request

我的函数如下所示:-

 function getCustomers() {
        var len = 5;
        var customers = new Array(len);
        var _promises = [];
        for (var i = 0; i < 5; i++) {

             var p = dataService.get(sData, 'Customer').then(function (data) {
                 if (data.entity === "Customer" && data.id > 0) {
                       //*******I am in need to access customers by index (i)**********;
                       //customers[i] = data.id
                       return alert("loop "+i); 
     //***** Issue-this alerts 5 times "loop 6" ***///////
                    }
             })

             _promises.push(p);
            }


        }

        $q.all(_promises).then(function () {

        })
    }

这就是 Angular(数据服务)的样子

 function read(data, entityName) {
        var url = "API_Url"
        return $http({
            method: 'GET',
            url: url,
        })
        .then(success)
        .catch(exception);

       function success(response){
       return response.data;
       }
    }

如果您使用的是 ES6,则可以像这样 for (let i = 0; i < 5; i++) {

在循环中使用 let 代替 var

然后 let 你的代码就可以工作了,就像这个简单的例子

for (let i=0;i<5;i++){
 setTimeout(()=> console.log(i),0);
}

这是可能的,因为 let 关键字的块作用域性质

如果不使用 ES6,你应该像这样在循环中复制 i 变量

for (var i=0;i<5;i++){
 (function(j){
   setTimeout(()=> console.log(j),0)
 })(i);
}

你可以在这里找到很好的解释https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20%26%20closures/ch5.md#loops--closure