同步http.get angular 2,ionic 2

同步http.get angular 2,ionic 2,angular,ionic2,Angular,Ionic2,我对异步http.get有问题。在循环中,我有http.get,我认为——在本例中——更好的方法是同步方法。你怎么认为?我怎样才能解决这个问题 我用离子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'])

我对异步http.get有问题。在循环中,我有http.get,我认为——在本例中——更好的方法是同步方法。你怎么认为?我怎样才能解决这个问题

我用离子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个警报“信标id”,最后我得到“警报json”

我想要达到的目标:

  • 在数组中,我有大约10个项目
  • 使用beacon的url向我的服务器发送每个循环do请求
  • 只有少数信标获得阵列响应
  • 当我使用配置数组获得第一个JSON响应时,我想打破循环

  • 问题是答案来得太晚,我无法保持中断循环等。

    如果希望同步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);