循环承诺会产生订单问题

时间:2019-05-08 18:29:22

标签: javascript angular loops promise

我有问题。当我运行程序时,它没有以正确的顺序运行。

因此通常,我的console.log必须显示1 2 3 4 3次。 但是所有console.log(1)在一开始就完成了。所以看起来像: 1,1,1,1,2,3,4,2,2,3,4,2,3,4

第一个http请求给了我一系列不同的数据。对于此数据的每个元素,我想在另一个函数two()中进行处理。使用第二个功能,我可以从另一个http请求中恢复其他数据。

我已经在Internet上进行了检查,因此我使用了异步并等待,但它不起作用。

能帮我一下吗:)

one(){

    return new Promise((resolve,reject) => {

      this.http.get(this.url1, {responseType: 'text'})
    .subscribe(
      (data)  => {

        var i = 1;

        JSON.parse(data).results.forEach(async element => {

          console.log("1");

          await this.two(i).then((value:[]) => {

            console.log("3");
            otherfunction(value);



          });

          i++;


          console.log("4")

        });

        resolve(this.list);       

      },
      err => {
        console.log("err : " + err.message);
        reject([]);
      }
    )

    });

  }
  two(id){

    var url2 = "myurl/" + id;


    return new Promise((resolve,reject) => {



      this.http.get(url2, {responseType: 'text'})
    .subscribe(
      (data)  => {

        var types = [];


        JSON.parse(data).types.forEach(element => {

          types.push(element.type.name);

        });

        console.log("2");


        resolve(types);       

      },
      err => {
        console.log("err : " + err.message);
        reject();
      }
    )

    });

  }

0 个答案:

没有答案