贺贺V5
Angular2 之 Promise vs Observable
关注作者
前往小程序,Get
更优
阅读体验!
立即前往
腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
圈层
工具
文章/答案/技术大牛
搜索
搜索
关闭
发布
首页
学习
活动
专区
圈层
工具
返回腾讯云官网
贺贺V5
首页
学习
活动
专区
圈层
工具
返回腾讯云官网
社区首页
>
专栏
>
Angular2 之 Promise vs Observable
Angular2 之 Promise vs Observable
贺贺V5
关注
发布于 2018-08-21 12:04:22
发布于 2018-08-21 12:04:22
603
0
举报
文章被收录于专栏:
贺贺的前端工程师之路
贺贺的前端工程师之路
如果看成状态机
Promise 具有 3 个状态:pending、resolved、rejected(如果 Cancelable Promise 正式通过,那么还会增加一个状态)。
Observable 有 N + 3 个状态:idle、pending、resolved_0、resolved_1 … resolved_N、completed 和 error。 总结:相比于 Promise 这个有限状态机而言,Observable 既可能是有限状态机,也可能是无限状态机(N 为无穷)。
调用情况
Observable 还具有可订阅性,对于 Cold Observable 而言,只有订阅后才开始起作用
Promise 一经产生便开始起作用 总结:在
视频
中有详细的介绍。
结束
由于 Promise 仅有一个数据,故数据被获取即为 Promise 完成,仅需要一个状态。
Observable,由于可以有任意多个数据,因此需要一个额外的状态来表示完成,一经完成后便不能再产生数据。
运算符
Promise ,由于有且只有一个数据,所以无需复杂的操作,仅需要一个简单的变换(返回值)或者组合(返回另一个 Promise)功能即可,甚至还可以把组合变换与使用统一为一个操作,也就是我们的 .then。
Observable,由于可以有任意多个数据,为了使用上的方便,提供了很多运算符,用来简化用户代码(可以参考 Array)。
对于变换,(最简单的方式)需要使用 .map 方法,用来把 Observable 中的某个元素转换成另一种形式。
对于组合,(最简单的方式)需要使用 .mergeMap 方法,用来把两个 Observable 整合为一个 Observable;
对于使用,我们需要使用 .subscribe 方法,用来通知 Observer 我们需要它开始工作。
当然还可能有另一类运算符,比如 .toPromise 等,这些并不返回 Observable 的方法其实本身并不是一个运算符,仅仅是对 Observable 的原型扩展。
参考文档:
如何理解 RxJS?
视频
本文参与
腾讯云自媒体同步曝光计划
,分享自作者个人站点/博客。
原始发表:2017.01.20 ,如有侵权请联系
cloudcommunity@tencent.com
删除
前往查看
其他
本文分享自
作者个人站点/博客
前往查看
如有侵权,请联系
cloudcommunity@tencent.com
删除。
本文参与
腾讯云自媒体同步曝光计划
,欢迎热爱写作的你一起参与!
其他
评论
登录
后参与评论
0 条评论
热度
最新
推荐阅读
目录
如果看成状态机
调用情况
结束
运算符
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档
0
0
0
推荐