javascript - 等待可观察完成

标签 javascript angular typescript rxjs observable

我有一系列方法依赖于其他方法的完成。

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/

相关文章:

javascript - 在 Angular 中,如果选择了一个开关,如何禁用其余开关?

javascript - 获取对象数组中重复对象的列表

javascript - TypeScript es6-promise,我如何匹配 Promise 构造函数

javascript - 是否可以断开 Dojo 中所有事件处理程序的连接?

javascript - react 单选按钮 : checked cycle not aligned

javascript - Raphael JS 翻转图像

asp.net - 如何让google map API获取指定区域的餐馆

css - 修改此 CSS 掩码方法以允许用户仅输入 -9999999 到 9999999 之间的值

javascript - 尝试从本地主机 :4200 to http://localhost:3333 代理请求/api/书籍时出现 Angular HPM 本地主机错误

angular - 如何使用 Angular2 将数据发送到 ASP.NET Controller