在角度为2的angular.io教程的服务部分,我点击了一个名为of.for的方法,例如:
getHeroes(): Observable<Hero[]> { return of(HEROES); }
或在下面的样本:
getHero(id: number): Observable<Hero> { // Todo: send the message _after_ fetching the hero this.messageService.add(`HeroService: fetched hero id=${id}`); return of(HEROES.find(hero => hero.id === id)); }
在angular.io刚刚解释
used RxJS of() to return an Observable of mock heroes
(Observable).
并没有解释为什么我们应该使用功能,它究竟做了什么,它有什么好处?
解决方法
他们使用()的原因是因为它很容易使用它而不是真正的HTTP调用.
在实际应用程序中,您将实现这样的getHeroes(),例如:
getHeroes(): Observable<Hero[]> { return this.http.get(`/heroes`); }
但是,由于您只想使用模拟响应而不创建任何真正的后端,您可以使用()返回虚假响应:
const HEROES = [{...},{...}]; getHeroes(): Observable<Hero[]> { return of(HEROES); }
你的应用程序的其余部分将工作相同,因为()是一个Observable,你可以稍后订阅或链接运算符,就像你使用this.http.get(…).