【发布时间】:2019-10-08 21:01:43
【问题描述】:
我需要调用具有异步 (http) 返回的服务,并将其输出用作服务方法(返回可观察对象)的附加输入。在 Angular 4+ 中执行此操作的最佳方法是什么?
我已经尝试在第一个服务的“订阅”方法中“链接”结果,但这样做我的服务总是返回“null”。
public secondServiceCall: Observable<object> {
this.firstService.next().subscribe(result=> {
item.number = result;
return this.httpService.post<object>('/new', item);
});
}
我预计在 firstService 的订阅完成之前该函数不会返回(类似异步),但这并没有发生 - 相反,我在调用函数中得到了“null”。
我还尝试将 firstService 调用用作可观察对象 - 这会正确返回第二个可观察对象,但在触发第二个可观察对象之前从不等待“then”函数执行。
this.firstService.next().toPromise().then(result=> {
item.number = result;
});
return return this.httpService.post<object>('/new', item);
【问题讨论】:
-
我知道 switchMap 运算符,但我找不到任何有用的示例来说明如何等待第一个结果,然后触发第二个 observable。你能扩展你的链接吗?
-
这个链接有很多例子。
return call1().pipe(switchMap(response1 => call2(response1))
标签: angular asynchronous rxjs observable