真的,我已经尝试过所有方法,但我找不到解决方案。
由于没有英语,我正在使用谷歌翻译,我会连续多次解释同样的事情。
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;}
}
谢谢
答案 0 :(得分:1)
使用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
})
您可能需要添加错误处理。
答案 1 :(得分:0)
尝试使用递归函数。在响应来之后,只需递增计数器......