Promise和Observable的映射
2024-09-02 12:06:49
前言
- 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 => {});
最新文章
- Map<;Key,Value>;基于Value值排序
- Gitblit中采用Ticket模式进行协作开发
- CMS
- mysql5.6源码安装
- Fragment碎片的创建和动态更新
- NSString和NSArray平时练习总结
- [转载]eclipse中设置文件的编码格式为utf-8
- 数据类型和Json格式[转]
- JavaScript方法undefined/null原因探究及闭包简单实现
- 用了TextMate才知道什么叫神级Editor
- Python in/not in --- if not/if + for...[if]...构建List+ python的else子句
- Linux下进程通信方式(简要概述)
- (转) qt: usb热插拔(linux);
- C++的一些知识
- 宇宙最强IDE,查看设计器报错,看不了设计界面
- Access to XMLHttpRequest at &#39;XXX&#39; from origin &#39;XX&#39; has been blocked by CORS policy: No &#39;Access-Control-Allow-Origin&#39; header is present o AJAX跨域请求解决方法
- java拦截器(Interceptor)学习笔记
- csv到mysql数据库如何分割
- 《Android源码设计模式》--原型模式
- UVa 1374 Power Calculus (IDA*或都打表)