内部订阅并返回Angular中的可观察对象

时间:2019-05-30 19:59:48

标签: javascript angular typescript

真的需要帮助。我一直在尝试不同的方法,但是没有用。

function1() {
  return this.apiService.get().pipe(map(data => {
    return this.function2();
  }));
  }

function2() {
   const urls = [];

   for (let i = 1; i <= 5; i++) {
      urls.push(
        this.apiService
          .get('/users/?page=' + i)
          .pipe(map(data => data))
      );
    }

   forkJoin(...urls).subscribe(data => {
     data.forEach(element => {
        results = results.concat(element.results);
      });
     return results;
     })
    }


this.someService.function1().subscribe(data => {
console.log(data);
})

所以基本上,我想打印出我在function1()中订阅的数据。但是function1()的结果依赖于另一个subscription()的function2()。

我确实知道为什么,但只是不知道如何解决。当我运行脚本时,我总是变得不确定,原因是因为function1()无法等待function2()返回结果。

我被困在这里。谢谢,

答案:我发现我不应该将function2中的结果作为数组返回。

function2() {
   const urls = [];

   for (let i = 1; i <= 5; i++) {
      urls.push(
        this.apiService
          .get('/users/?page=' + i)
          .pipe(map(data => data))
      );
    }

   return forkJoin(urls);

然后基于funtion2的输出,我将在function1中完成剩下的工作,即concat()。...

1 个答案:

答案 0 :(得分:1)

您将需要/channels/create-Documentation

获得switchMap的结果后,您想“切换”以等待function1

function2