前言

  1. promise解决了嵌套地狱的问题,Observable解决了promise只有一个结果,和不可以取消的问题。
  2. 使用的是rxjs6版本。
  3. 这篇文章是方便使用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 => {});

最新文章

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

热门文章

  1. Linux(Ubuntu)系统下使用crontab定期执行任务
  2. Apache Zookeerper搭建
  3. WebService基础概念
  4. (三)MongoDB增、删、改、查
  5. discuz x3.3门户出现关键词和描述显示“首页”的解决方法
  6. easyui datebox 只显示日期,本文为转载,稍加改动
  7. NameValueCollectionValueProvider
  8. *Bootstrap系列 - (1)概述
  9. HDFS的读写流程
  10. Mybatis技术一数据库连接池配置(druid)