Promise和Observable的映射

前言

  1. promise解决了嵌套地狱的问题,Observable解决了promise只有一个结果,和不可以取消的问题。
  2. 使用的是rxjs6版本。
  3. 这篇文章是方便使用Observable的API替换Promise的API。

正常用法

1promise 2.then(result => {}) 3.catch(error => {}) 4.finally(() => {}); 5 6observable.subscribe( 7 result => {}, 8 error => {}, 9 ()=>{}, // finally 10);

then

1promise 2.then(result => {}) 3.then(result => {}) 4.then(result => {}) 5 6import { concat } from 'rxjs'; 7concat(observable0,observable1,observable2).subscribe( 8 result => {}, 9 error => {}, 10 ()=>{}, // finally 11); 12 13// promise 14this.getOne().then(data => { 15 // 这里返回另外一个Promise 16 return this.getTwo(data); 17}).then(data => { 18 console.log(data); // 这里打印第二个Promise的值 19 return this.getThree(data); 20}).then(data => { 21 console.log(data); // 这里打印第三个Promise的值 22}); 23 24// Observable 25import { forkJoin, Observable,from,pipe } from 'rxjs'; 26import { retryWhen, map, mergeMap } from 'rxjs/operators'; 27 28from(this.getOne) 29.pipe( 30 mergeMap(oneData => { 31 console.log(oneData) 32 return from(this.getTwo) 33 }), 34 mergeMap(twoData => { 35 console.log(twoData) 36 return from(this.getThree) 37 }) 38) 39.subscribe(threeData => { 40 console.log(threeData) 41 ... 42})

Promise.all

1Promise.all([promise0, promise1]).then((result)=>{}); 2 3import { forkJoin } from 'rxjs'; 4forkJoin([observable0, observable1]).subscribe(result => {});

Promise.race

1Promise.race([promise0, promise1]).then((result)=>{}); 2 3import { race } from 'rxjs/observable/race'; 4race([observable0, observable1]).subscribe(result => {});
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

swap空间的增减方法

(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

JavaScript中Promise 使用、原理以及实现过程

1.什么是Promisepromise是目前JS异步编程的主流解决方案,遵循Promises/A方案。2.Promise原理简析(1)promise本身相当于一个状态机,拥有三种状态pendingfulfilledrejected一个promise对象初始化时

Promise和Observable的映射 - HelloWorld