使用NodeJS调用HTTP API我遇到了一种奇怪的行为。我有一个API调用,它返回一个ID数组,并且在每个ID上我需要以ID作为参数发出另一个HTTP请求。我最终得到了这段代码:
http.get("/getPersons", function(persons) {
for(var i = 0; i < persons.length; i++) {
var count = 0;
http.get("/getPersonAddress?id=" + persons[i].id, function(address) {
persons[i].address = address;
count++;
if(count == persons.length) {
res.end(JSON.stringify(persons));
}
});
}
});
现在,由于循环在所有HTTP请求收到响应之前完成,i
将等于persons.length + 1
,并且看起来传递给回调函数的i
变量已通过通过引用而不是值,因为当我运行此代码时,它会抱怨persons[i].address
未定义,当我看到i
此时我看到它等于persons.length + 1
而不是i
在http.get
被调用的那一刻{{1}}。
你通常如何解决这个问题?