前言

  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 => {});

Promise和Observable的映射的更多相关文章

  1. angular2系列教程(八)In-memory web api、HTTP服务、依赖注入、Observable

    大家好,今天我们要讲是angular2的http功能模块,这个功能模块的代码不在angular2里面,需要我们另外引入: index.html <script src="lib/htt ...

  2. rxjs的世界

    rxjs学习了几个月了,看了大量的东西,在理解Observable的本文借鉴的是渔夫的故事,原文,知识的主线以<深入浅出rxjs>为主,动图借鉴了rxjs中文社区翻译的文章和国外的一个动图 ...

  3. 响应式编程(Reactive Programming)(Rx)介绍

    很明显你是有兴趣学习这种被称作响应式编程的新技术才来看这篇文章的. 学习响应式编程是很困难的一个过程,特别是在缺乏优秀资料的前提下.刚开始学习时,我试过去找一些教程,并找到了为数不多的实用教程,但是它 ...

  4. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  5. Angular2 管道

    1. 说明 管道用来转换模板显示的内容,应用程序中经常出现获取数据,转换数据,显示数据的逻辑.管道就是用来在转换数据阶段起作用的.主要存在两种类型的管道,pure pipe和impure pipe 2 ...

  6. [RxJS] Combining streams in RxJS

    Source: Link We will looking some opreators for combining stream in RxJS: merge combineLatest withLa ...

  7. Knockoutjs官网翻译系列(四) computed中依赖追踪是如何工作的

    初学者无需了解这些 ,但是很多高级程序员想知道我们为什么可以保持跟踪这些依赖以及可以正确的更新到UI中.它其实很简单.跟踪算法是这样的: 无论何时你定义了一个computed observable,K ...

  8. [Angular 2] Async Http

    Async Pipe: The Asynce pipe receive a Promise or Observable as  input and subscribes to the input, e ...

  9. RxSwift(一)

    文/iOS_Deve(简书作者) 原文链接:http://www.jianshu.com/p/429b5160611f 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者" ...

随机推荐

  1. document.forms使用

    定义:document.forms返回form表单的集合,包含了当前DOM结构中所有的form表单. 语法: . 获取当前DOM结构中的第一个form表单. document.forms[] . 获取 ...

  2. Oracle rman备份还原

    备份脚本: oracle备份fullbak.sh 脚本 . /u01/prod/db/12.1.0/PROD_erpdbp.env LOGDATE="`date '+%Y%m%d'`&quo ...

  3. 数字转datetime格式

    原数据:int型 转成年月日 时分秒的形式 source_test['happenTime'] = source_test['happenTime'].map(lambda x:str(x)) sou ...

  4. MySQL定义char和varchar类型,utf8编码,则最大值为多少?

    有道面试题:若一张表中只有一个字段VARCHAR(N)类型,utf8编码,则N最大值为多少?先明白计算的一些规则限制 4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只 ...

  5. 201671030123叶虹 实验十四 团队项目评审&课程学习总结

    项目 内容 这个作业属于哪个课程 软件工程 这个作业的要求在哪里 实验十四 团队项目评审&课程学习总结 课程学习目标 掌握软件项目评审会流程:反思总结课程学习内容 一.实验一问题回答 1.实验 ...

  6. 《团队名称》第八次团队作业:Alpha冲刺day4

    项目 内容 这个作业属于哪个课程 2016计算机科学与工程学院软件工程(西北师范大学) 这个作业的要求在哪里 实验十二 团队作业8-软件测试与ALPHA冲刺 团队名称 快活帮 作业学习目标 (1)掌握 ...

  7. python应用-给出行数,输出相应的杨辉三角

    def main(): num = int(input('Number of rows: ')) yh = [[]] * num for row in range(num): yh[row] = [N ...

  8. Helm 安装部署Kubernetes的dashboard

    Kubernetes Dashboard 是 k8s集群的一个 WEB UI管理工具,代码托管在 github 上,地址:https://github.com/kubernetes/dashboard ...

  9. 理解serverless无服务架构原理(一)

    阅读目录 一:什么是serverless无服务? 二:与传统模式架构区别? 三:serverless优缺点? 四:使用serverless的应用场景有哪些? 回到顶部 一:什么是serverless无 ...

  10. 洛谷 P1993 小K的农场 题解

    每日一题 day55 打卡 Analysis 这是我们一次考试的T1,但我忘了差分约束系统怎么写了,所以就直接输出Yes混了60分 首先转化题目: 1:表示农场 a 比农场 b 至少多种植了 c 个单 ...