javascript - 为什么我们应该使用 RxJs of() 函数?

标签 javascript angular service rxjs angular2-services

在 angular2 的 angular.io 教程的服务部分,我点击了一个名为 of 的方法,例如:

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<Hero[]>).

并且没有解释为什么我们应该使用 of 运算符,它到底做了什么,它有什么好处?

最佳答案

他们之所以使用 of() 是因为它非常易于使用,而不是真正的 HTTP 调用。

在实际的应用程序中,您将像这样实现 getHeroes(),例如:

getHeroes(): Observable<Hero[]> {
  return this.http.get(`/heroes`);
}

但由于您只想使用模拟响应而不创建任何真实后端,您可以使用 of() 返回假响应:

const HEROES = [{...}, {...}];

getHeroes(): Observable<Hero[]> {
  return of(HEROES);
}

您的应用程序的其余部分将以相同的方式工作,因为 of() 是一个 Observable,您稍后可以像使用 this.http 一样订阅或链接操作符。获取(...)

of() 所做的唯一一件事是它在订阅时立即将其参数作为单个发射发出,然后发送 complete 通知。

关于javascript - 为什么我们应该使用 RxJs of() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47889210/

相关文章:

android - 从电池性能影响的角度来看,SQLite 数据库与基于文件的数据存储

javascript - 获取不在第二个、第三个数组中的项目 - JS

javascript - 如何防止用户在 Jquery Mobile 中点击浏览器后退按钮时离开页面?

javascript - 应用程序无法加载 Angular Material 主题

javascript - 使用外部服务验证表单

c#.net 网络服务

windows - 使用 TopShelf,我在 "Topshelf.HostConfigurators.WindowsServiceDescription service has not been installed yet."附近遇到错误

javascript - jQuery .on() 悬停不适用于 HTML5 选择框

javascript - Node 中的 Array.pop 跳过并忘记了一个函数项

angular - 无法从 App.Component 读取查询字符串参数