代码之家  ›  专栏  ›  技术社区  ›  Kgn-web

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

  •  1
  • Kgn-web  · 技术社区  · 7 年前

    我的函数如下所示:-

     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;
           }
        }
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Łukasz Szewczak    7 年前

    如果您正在使用ES6,则可以使用 let var 在这样的循环中 for (let i = 0; i < 5; i++) {

    然后使用 允许 你的代码可以工作,就像这个简单的例子

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

    这是可能的,因为 允许 关键字

    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