【发布时间】:2019-05-30 19:59:47
【问题描述】:
在这方面真的需要帮助。我一直在尝试不同的东西,但它不起作用。
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()的结果依赖于另一个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 的输出,我将在 function1 中完成剩下的工作,即 concat()....
【问题讨论】:
-
function2 是否依赖于 function1 的结果?
-
@robert 是的。来自 function1() 的数据将是调用 function2 的扩充。
-
@robert 我刚刚更新了我的问题。请看一下。谢谢
-
没关系,我想我已经解决了问题。
标签: javascript angular typescript