Javascript 订阅内部订阅并返回角度上的可观测值

Javascript 订阅内部订阅并返回角度上的可观测值,javascript,angular,typescript,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

我真的需要帮助。我一直在尝试不同的东西,但它不起作用

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(){
返回此.apiService.get().pipe(映射(数据=>{
返回这个.function2();
}));
}
职能2(){
常量URL=[];
对于(设i=1;i数据))
);
}
forkJoin(…URL).订阅(数据=>{
data.forEach(元素=>{
结果=results.concat(element.results);
});
返回结果;
})
}
this.someService.function1().subscribe(数据=>{
控制台日志(数据);
})
基本上,我想打印出我在function1()中订阅的数据。但是function1()依赖另一个subscribe()的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);
function2(){
常量URL=[];
对于(设i=1;i数据))
);
}
返回forkJoin(url);

然后根据Function2的输出,我将在function1中完成剩余的部分,即concat()…

您需要的
开关映射
-

一旦从
function1
获得结果,您需要“切换”到等待
function2

function1() {
    return this.apiService.get().pipe(switchMap(function1Data => {
        // Send function2 whatever data it needs
        // Example:
        return this.function2(function1Data.function2Argument).pipe(map(function2Data => {
            // Combine function1Data and function2Data as needed
            // Example:
            const result = {
                function1Property: function1Data.property,
                function2Property: function2Data.property
            };
            return result;
        }));
    });
}

函数2是否取决于函数1的结果?@robert yes。function1()中的数据将是调用function2的扩充。@robert我刚刚更新了我的问题。请快看一下。不管怎样,我想我已经解决了这个问题。谢谢你的回答。我已经试过了,但是我得到了“无法读取未定义的属性‘pipe’”。function2()的返回是一个数组。我不确定这是否是问题的原因。我刚刚更新了我的问题。请快速查看功能2中的内容。谢天谢地。根据你的建议,我已经解决了这个问题。这很有帮助。再次感谢。