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中的内容。谢天谢地。根据你的建议,我已经解决了这个问题。这很有帮助。再次感谢。