【发布时间】:2017-03-16 04:26:50
【问题描述】:
blow 代码来自ngrx/example 中的 bookexist 路由守卫
我知道它正在调用googleBooks 服务来发出http 请求并检查这本书是否已经在商店中。我无法理解的部分是它没有在警卫服务的任何地方调用subscribe。我的理解是 Anuglar2 中的 http Observables 被认为是冷 Observables,这意味着它们不会被调用,直到有人订阅它。
我的问题是:下面的 googleBooks 服务是如何被调用的?
hasBookInApi(id: string): Observable<boolean> {
return this.googleBooks.retrieveBook(id)
.map(bookEntity => new book.LoadAction(bookEntity))
.do((action: book.LoadAction) => this.store.dispatch(action))
.map(book => !!book)
.catch(() => {
this.router.navigate(['/404']);
return of(false);
});
}
【问题讨论】:
标签: rxjs angular2-http angular2-observables