0

我目前正在尝试创建一个循环的函数,并通过使用 .subscribe 每次都得到一个数组对象,以便稍后我可以将数据推送到另一个数组中。循环有效,但问题是结果不是我想要的,因为 .subscribe 部分正在打印第一个数组,然后其余部分为我提供空数组,而它假设打印 20 倍相同的数组。我目前开始尝试使用 angular 并且根据我对其他语言的了解,我认为首先打印“Test”x20 然后进入订阅和打印后效果并不好。

功能:

testingFunction()
{
   let i: number = 0;

   while(i < 20){

   console.log("Test");

   this.testService.getAll().subscribe((object: any[]) => {
      console.log(object);
   })

    i++;
  }
}
4

1 回答 1

2

由于您使用的是 Angular,因此您可以使用 RxJS 运算符来处理这种情况。forkJoin运算符将允许您在返回所有可观察对象之前等待 while 循环操作完成。

这是您可以使用运算符的方式:

testingFunction() {
   let i: number = 0;
   const observablesList = []; 

   while(i < 20){
     observablesList.push(this.testService.getAll());
     i++;
   }
   forkJoin(observablesList).subscribe((response) => {
     console.log(response);
   });
}
于 2020-01-25T11:15:01.580 回答