如何在 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
我的函数如下所示:-
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