如何避免在循环内创建函数?
How to avoid creating a function inside a loop?
我正在使用 REST
调用收集一些数据。
我有以下函数调用 "directory" 端点,returns 我是一个人的列表
我可以获得更多关于他们孩子的信息。
现在要获取他们的个人信息,我将不得不访问他们各自的 API。
var listOfPeople = [];
var numberOfKids = [];
//using superagent
var req = request.get(ApiPrefix + "/directory");
req.end(function (err, res) {
if (err || !res.ok) {
console.log("Error obtaining directory");
} else {
listOfPeople.add(res.body);
// loop to retrieve all events.
for (var i = 0; i < res.body.length; i++) {
var personID = res.body[i].id;
$.getJSON('/directory/person', {
id: personID
},
function (result) {
numberOfKids.add(result);
});
}
}
});
虽然上面的代码工作得很好,但我从 Gulp watch
:
收到一个错误
line 67, col 30, Don't make functions within a loop. (W083)
1 error
那么,如何在期望完全相同的行为的同时解耦循环和 AJAX 调用?
我认为你可以删除 for 循环并开始使用 Array.forEach
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
支持所有最新的浏览器
在你的情况下,你的 for 循环应该修改为
res.body.forEach(function(person){
var personId = person.id;
// your getJson call comes here
});
我正在使用 REST
调用收集一些数据。
我有以下函数调用 "directory" 端点,returns 我是一个人的列表
我可以获得更多关于他们孩子的信息。
现在要获取他们的个人信息,我将不得不访问他们各自的 API。
var listOfPeople = [];
var numberOfKids = [];
//using superagent
var req = request.get(ApiPrefix + "/directory");
req.end(function (err, res) {
if (err || !res.ok) {
console.log("Error obtaining directory");
} else {
listOfPeople.add(res.body);
// loop to retrieve all events.
for (var i = 0; i < res.body.length; i++) {
var personID = res.body[i].id;
$.getJSON('/directory/person', {
id: personID
},
function (result) {
numberOfKids.add(result);
});
}
}
});
虽然上面的代码工作得很好,但我从 Gulp watch
:
line 67, col 30, Don't make functions within a loop. (W083)
1 error
那么,如何在期望完全相同的行为的同时解耦循环和 AJAX 调用?
我认为你可以删除 for 循环并开始使用 Array.forEach https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
支持所有最新的浏览器
在你的情况下,你的 for 循环应该修改为
res.body.forEach(function(person){
var personId = person.id;
// your getJson call comes here
});