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 => {});
合乎自然而生生不息。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架