我遇到异步http.get的问题。在循环中我有http.get,我认为 - 在这种情况下 - 更好的是同步方法。你怎么看?我该如何解决这个问题?
我使用Ionic 2。
以下是我的代码:
for (var key in this.beacons) {
alert('beacon id: ' + this.beacons[key]['url']);
this.http.get('http://website.com/app.php?id=' + this.beacons[key]['url']).map(res => res.json()).subscribe(
data => {
this.json = data.config;
alert('alert json, id: ' + this.beacons[key]['url']);
}, error => {
this.jsonError = true;
});
if (this.json['id']) {
alert('alert end, id: ' + this.beacons[key]['url']);
break;
}
}
一开始我得到大约10个警报“beacon id”,最后我得到“警告json”。
我想要实现的目标:
问题是答案来得晚,我不能保持中断循环等。
答案 0 :(得分:0)
如果你想要同步你的ajax调用,我想你可以实现一个递归方法。因此,在第一次ajax调用之后,如果您没有得到所需的响应,则可以使用不同的URL再次调用该方法
示例:
let arr = [];
for(var key in this.beacons){
arr.push(key);
}
function callAjax(index){
if(index >= arr.length){
return;
}else{
//YOUR AJAX CALL...
data => {
this.json = data.config;
}, error => {callAjax(index + 1)}
}
}
第一次电话
callAjax(0);