我有一系列方法依赖于其他方法的完成。
process1(data: string) : Observable<string> {
this.dataservice.process(data).subscribe(
(response) => {
return response.data;
}
);
}
main(data: string) : string {
var process1Data: string = process1(data);
// I would like to wait for process1 method to complete before running process2
// I do not want to include process2 inside subscribe of process1 because I have to make few more method calls
var process2Data: string = process2(process1Data);
var process3Data: string = process3(process2Data);
...
}
如何在调用下一个方法(process2、process3)之前等待 observable 完成? (类似于 c# 中的 await)
最佳答案
你可能会尝试这样的事情......
main(data: string) : string {
process1Data$: Observable<string> = process1(data)
.take(1)
.switchMap((process1Data) => return process2(process1Data);
.
.
.
}
显然,take(1)
假设process1(...)
解析为单一值并停止。之后它switchMap
s 至 process2
这意味着它开始发射任何可从 process2
观察到的东西 |给。
另一方面,如果你想要 process2
运行从 process1
发出的每个结果然后删除take(1)
.
关于javascript - 等待可观察完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45354940/