Promise和Observable的映射
前言
- promise解决了嵌套地狱的问题,Observable解决了promise只有一个结果,和不可以取消的问题。
- 使用的是rxjs6版本。
- 这篇文章是方便使用Observable的API替换Promise的API。
正常用法
promise
.then(result => {})
.catch(error => {})
.finally(() => {});
observable.subscribe(
result => {},
error => {},
()=>{}, // finally
);
then
promise
.then(result => {})
.then(result => {})
.then(result => {})
import { concat } from 'rxjs';
concat(observable0,observable1,observable2).subscribe(
result => {},
error => {},
()=>{}, // finally
);
// promise
this.getOne().then(data => {
// 这里返回另外一个Promise
return this.getTwo(data);
}).then(data => {
console.log(data); // 这里打印第二个Promise的值
return this.getThree(data);
}).then(data => {
console.log(data); // 这里打印第三个Promise的值
});
// Observable
import { forkJoin, Observable,from,pipe } from 'rxjs';
import { retryWhen, map, mergeMap } from 'rxjs/operators';
from(this.getOne)
.pipe(
mergeMap(oneData => {
console.log(oneData)
return from(this.getTwo)
}),
mergeMap(twoData => {
console.log(twoData)
return from(this.getThree)
})
)
.subscribe(threeData => {
console.log(threeData)
...
})
Promise.all
Promise.all([promise0, promise1]).then((result)=>{});
import { forkJoin } from 'rxjs';
forkJoin([observable0, observable1]).subscribe(result => {});
Promise.race
Promise.race([promise0, promise1]).then((result)=>{});
import { race } from 'rxjs/observable/race';
race([observable0, observable1]).subscribe(result => {});
Promise和Observable的映射的更多相关文章
- angular2系列教程(八)In-memory web api、HTTP服务、依赖注入、Observable
大家好,今天我们要讲是angular2的http功能模块,这个功能模块的代码不在angular2里面,需要我们另外引入: index.html <script src="lib/htt ...
- rxjs的世界
rxjs学习了几个月了,看了大量的东西,在理解Observable的本文借鉴的是渔夫的故事,原文,知识的主线以<深入浅出rxjs>为主,动图借鉴了rxjs中文社区翻译的文章和国外的一个动图 ...
- 响应式编程(Reactive Programming)(Rx)介绍
很明显你是有兴趣学习这种被称作响应式编程的新技术才来看这篇文章的. 学习响应式编程是很困难的一个过程,特别是在缺乏优秀资料的前提下.刚开始学习时,我试过去找一些教程,并找到了为数不多的实用教程,但是它 ...
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Angular2 管道
1. 说明 管道用来转换模板显示的内容,应用程序中经常出现获取数据,转换数据,显示数据的逻辑.管道就是用来在转换数据阶段起作用的.主要存在两种类型的管道,pure pipe和impure pipe 2 ...
- [RxJS] Combining streams in RxJS
Source: Link We will looking some opreators for combining stream in RxJS: merge combineLatest withLa ...
- Knockoutjs官网翻译系列(四) computed中依赖追踪是如何工作的
初学者无需了解这些 ,但是很多高级程序员想知道我们为什么可以保持跟踪这些依赖以及可以正确的更新到UI中.它其实很简单.跟踪算法是这样的: 无论何时你定义了一个computed observable,K ...
- [Angular 2] Async Http
Async Pipe: The Asynce pipe receive a Promise or Observable as input and subscribes to the input, e ...
- RxSwift(一)
文/iOS_Deve(简书作者) 原文链接:http://www.jianshu.com/p/429b5160611f 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者" ...
随机推荐
- 访问Stack Overflow速度超慢的原因
很多网站,尤其是国外网站,为了加快网站的速度,都是用了 Google 的 CDN. 但是在天朝,由于某些原因,导致全球最快的 CDN 变成了全球最慢的. 解决方法步骤如下: 下载ReplaceGoog ...
- Odoo中的Widget
转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826144.html 一:Widget是什么 Odoo中定义了字段的显示形式,不同字段类型的字段都有其不同 ...
- 《linux就该这么学》课堂笔记09 存储结构、磁盘划分
Linux一切都是文件 "/"为根目录(万物起始) **挂载后要想永久生效,需要修改开机启动项 vim /etc/fstab
- 201671010406-丁家辉-实验十四 团队项目评审&课程学习总结
实验十四 团队项目评审&课程学习总结 项目 内容 这个作业属于哪个课程 [教师博客主页链接] 这个作业的要求在哪里 [作业链接地址] 作业学习目标 (1)掌握软件项目评审会流程(2)反思总结课 ...
- Ubuntu设置终端操作行为的回收站
Ubuntu设置终端操作行为的回收站(默认情况下,在终端删除文件,会直接删除) 参考自:https://help.aliyun.com/knowledge_detail/41359.html?spm= ...
- 【Java】Java环境变量配置
一.windows系统 右键你的电脑(计算机/此电脑)打开属性->高级系统设置->环境变量,在系统变量里配置三个环境变量. 假设jdk的安装路径为C:\Program Files\Java ...
- CSS进阶之路
下面主要引用http://www.cnblogs.com/wangfupeng1988/tag/css知多少/ CSS进阶笔记: 一.学习CSS的三个突破点 1.浏览器如何加载和解析CSS——CSS的 ...
- http协议 | http缓存
缓存控制 1.禁止进行缓存:缓存中不得存储任何关于客户端请求和服务端响应的内容.每次由客户端发起的请求都会下载完整的响应内容. Cache-Control: no-store Cache-Contro ...
- 异步模型:上下文与时间---async = request + reponse + handler + context + time;
futureHandler = current(handler, context(t0)) : T0 -> handler(context(t0),taskResult) : Tx ...
- Python 鼠标键盘操作
1.鼠标操作 from pymouse import PyMouse myMouse = PyMouse() #获取当前的鼠标位置 # nowP = myMouse.position() # prin ...