首页 > 解决方案 > Angular http请求执行得太晚

问题描述

在我的 Angular Projekt 中,我有以下代码:

  ngOnInit() {

    var countTo = 50;
    for (let i = 1; i < (countTo + 1); i++) {
      this.http.get('https://projekt-dunkelbunt.de/index.php/wp-json/wp/v2/media?max_page=25&page=' + i).subscribe(data =>{

        for(let key in data){
            if(data.hasOwnProperty(key)){
              this.media.push(data[key]);
              console.log(this.media);
              this.descriptions.push(data[key].description.rendered.split('>', 7));
              console.log(this.descriptions);
            }
        }

        console.log("AFTER FOR Length: " + this.media.length);

        if (this.media.length != (this.counter * 10)) {
          this.execute = false;
        }

        this.counter++;

      }, error => {
        console.error("Fehler  beim Laden: " + i + " - " + error);
        i = countTo + 1;
        this.loadPictures();
      });
    }   

    inializeDefaultButtons();

    console.log("ngOnInit(bilder.component.ts) -> done!");
  }

我对这段代码的问题是,for 在 inializeDefaultButtons() 之后执行,我不知道为什么,我需要 inializeDefaultButtons() 方法中来自 FOR 的数据,但是知道 inializeDefaultButtons() 方法被执行,然后执行for 被执行。

我究竟做错了什么?

标签: javascriptangulartypescript

解决方案


你想达到什么目的?

您可以创建可观察对象,而无需为每个对象订阅它们,然后如果要保留它们的顺序,则将所有可观察对象绑定到 concat 运算符中。

https://rxjs-dev.firebaseapp.com/api/index/function/concat


推荐阅读