怎樣在RxJS Observable中使用Async-Await

怎樣在RxJS Observable中使用Async-Await

一般情況下 async-await 和 Observables 并不能“在一起使用”。但RxJS 從一開始就具備與 Promises 的高度互操作性。

為什么有這個需求

由于工作中使用的ng7,之前工作中碰上一個比較復雜的邏輯(大概時兩個輪詢相互調用,每個輪詢都有多種狀態,其中一個輪詢還內置了setTimeout,setInterval)

直接使用rxjs會導致嵌套非常多的層數(可能是我rxjs寫的太菜了,rxjs有點難學,用了這么久還是只會一些基本的用法寫不出大神一般華麗的操作),總之使用rxjs處理這個邏輯,讓我的代碼變得異常復雜,可讀性變得非常的低,導致后面連自己看這段代碼都變得非常吃力,今天我痛定思痛,決定使用Async-Await重寫這部分的異步邏輯。最后終于解決了代碼的可讀性問題,由于可讀性變高,還解決了之前一直不能解決的一些bug,和潛在bug。

應用

大概總結一下怎樣在RxJS Observable中使用Async-Await;

// 構造一個可觀察對象
const source$ = Observable.interval(1000).take(3);

// 第一步當然是使用asycn關鍵字申明函數
asycn function test() {
    try{

        // toPromise()將可觀察對象source$轉為promise;
        const x = await source$.toPromise();

        console.log(x);

    } catch(err){
        console.log(err);
    }
} 

 

 

posted @ 2019-07-25 22:54  siegaii  閱讀(...)  評論(...編輯  收藏
内蒙古快3开奖结果 安徽福利快三 e球彩3场全包24元 广东11选5任选基 贵阳捉鸡麻将游戏 股票分析微信 股票融资公司合法吗 期货配资如何构成犯罪 股票推荐网站 贝赢配资 宁夏闲来麻将下载 贵阳捉鸡麻将微乐 麻将来了坐下失败请重试 江苏快三的开奖结果 大透乐开奖结果查询 二人麻将口诀和技巧 nba球队排名榜2