真的,我已经尝试了所有方法,但没有找到解决方案。
由于我不会英语,而且我正在使用谷歌翻译,所以我会连续解释几次同样的事情。
1º 尝试 For 循环将等待一切完成
2º 我尝试了解该城市在外部网络请求方面表现良好。和许多城市一样,一旦检查第一个城市正常,我就需要打破循环。
3º 我需要读取 json 并在运行时执行一个操作,然后等待它完成。然后随时跳出循环。
<小时/>我已经使用多个代码进行了测试,但在这里展示是为了更好地理解。
---------------------------------------------------------------------
var city =
[
{'city':'madrid'},
{'city':'barcelona'},
{'city':'valencia'},
{'city':'malaga'}
];
var vBreak = 0;
for (i in city){
request('example.there-city.com/' + city[i].city ,function (error, response, read) {
if (read == 'OK') { vBreak = 1}
});
if (vBreak == 1){ break;}
}
<小时/>
var city =
[
{'city':'madrid'},
{'city':'barcelona'},
{'city':'valencia'},
{'city':'malaga'}
];
var vBreak = 0;
for (i in city){
(function(i) {
request('example.there-city.com/' + city[i].ciudad ,function (error, response, read) {
if (read == 'OK') { vBreak = 1}
});
})(i);
if (vBreak == 1){ break;}
}
谢谢
最佳答案
使用 async.eachSeries (如 jgillich 所说)按如下顺序执行每个请求:
async.eachSeries(city, function (item, cb) {
if (vbreak !== 1) {
request('example.there-city.com/' + item.city ,function (error, response, read) {
if (read == 'OK') { vBreak = 1}
cb();
});
} else {
cb() // Skip
}
}, function () { // we're finished
})
您可能需要添加错误处理。
关于javascript - Node - 在 For 周期内等待请求响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26553154/