promise和Rxjs的一点区别

Posted 会飞的Tiger

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了promise和Rxjs的一点区别相关的知识,希望对你有一定的参考价值。

promise 代码 

let promise = new Promise( (resolve) => {
      setTimeout(() => {
          resolve(‘chen‘);
      },2000)
    });
    promise.then((value) => {
      console.log(value);
    })

Rxjs代码

let start = new Observable( (observer) => {
      let timeOut = setTimeout( () => {
        observer.next(‘chen2‘);
      },4000)
      
    })
    let str = start.subscribe( (value) => {
      console.log(value);
    })

 

区别1:  rxjs可以取消subscribe,promise不可以

  setTimeout( () => {
       str.unsubscribe();
   },1000)

 

区别2: rxjs可以发射多次,promise只能发射一次

let setTime2;
    let start2 = new Observable( (observable) => {
      let count = 0;
      setTime2 = setInterval( () => {
        observable.next(count++);
      },1000)
    })
    let str2 = start2.subscribe( (num) => {
        console.log(num);
        if(num > 10){
          str2.unsubscribe();
          clearInterval(setTime2);
        } 
    })

 

区别3: rxjs 自带了许多的工具函数,如filter等

以上是关于promise和Rxjs的一点区别的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 rxjs 和 redux observable 实现 Promise 类型的场景?

Promise和RxJS处理异步对比

我可以将 async/await Promises 与可观察的 RXJS 混合使用吗?

Nodejs Promise的一点记录

[RxJS] Implement RxJS `mergeMap` through inner Observables to Subscribe and Pass Values Through(代码片段

[RxJS] Implement RxJS `switchMap` by Canceling Inner Subscriptions as Values are Passed Through(代码片段