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等

时间: 2024-10-03 13:46:44

promise和Rxjs的一点区别的相关文章

POP动画引擎中Layer与CALayer的一点区别

POP动画引擎是facebook提供的一个开源框架, 可以实现很多的动画效果, 这里就不一一介绍啦, 有兴趣的童鞋请移步: https://github.com/facebook/pop 下面简单的讲一下POP动画引擎中Layer与CALayer的区别: 这里, 代码做的都是同一个效果: 执行位移动画3秒, 然后在1秒后移除所有动画 使用POP效果图: 使用CALayer效果图: 可以看到, POP执行的动画当动画被移除之后, 被执行对象保留了被停止时的状态 而CALayer执行的动画当动画被移

HashMap Hashtable ConcurrentHashMap 一点区别

HashMap  ConcurrentHashMap Hashtable 工作中经常会用到, HashMap用的最多, ConcurrentHashMap次之,hashTable用的最少. 简单看了下源码,其实原因还是挺明显的.从JDK的发展历程来看,hashTable是1.0就发布的,属于最早的key-value形式的存储, 到了1.2才有hashMap, ConcurrentHashMap是1.5中发布的,它们的实现有很多类同,也有很多细节上的区别.这里主要通过查看源码来比较下它们在写入与读

$.ajax与$.post、$.get的一点区别

后台代码: [HttpPost] public string DoLogin(string username,string password) { return "success"; } 当使用$.ajax时: var name = $('#txtUserName').val(); var pwd = $('#txtPassWord').val(); var param = "{username:'" + name + "',password:'"

JavaScript面向对象与传统面向对象的一点区别

1. JavaScript的面向对象是基于原型的: 2. JavaScript是以一个函数来表示类的,只不过这个函数中可以使用this,可以在里面声明属性和方法: 也可以倒过来说,如果一个普通函数中使用了this关键字,那么这个函数就是一个类,就必须以对象的形式来调用: 3. 所谓的对象,其实就是一个构造函数(和普通函数一样)加一个new关键字, 如果没有new关键字,那么这个构造函数就是一个普通的函数.在对象的声明这一点上,JavaScript是和传统面向对象相同的: 4. JavaScrip

C#在Win10与非Win10 Windows系统鼠标滚动编程的一点区别。

C#在win10和非Win10上处理鼠标滚动有一些区别,建一个Form1,放置一个FlowLayoutPanel ,类型的Panel1 Panel.MouseWheel += PanelOnMouseWheel; private void PanelOnMouseWheel(object sender, MouseEventArgs mouseEventArgs) { if (mouseEventArgs.Delta < 0) ScrollBar.Value = ScrollBar.Value

os.path.abs()与os.path.realpath()的一点区别

相同点 1. 两者都是返回绝对路径,如果参数path为空,则返回当前文件所在目录的绝对路径 当前py文件所在的目录是revise print(os.path.abspath("")) print(os.path.realpath("")) 运行结果: D:\python_workshop\python6\revise D:\python_workshop\python6\revise 2. 如果给一个不存在的文件名作为相对路径的path,会将当前所在目录和文件名拼接

VB类模块中属性的参数——VBA中Range对象的Value属性和Value2属性的一点区别

在VB中,属性是可以有参数的 -- 即: VB的语法,使用参数的不一定是方法,也有可能是属性!(虽然属性的本质是方法) 例一:参数当作"索引"使用 定义一个类模块,模块名称Ints.为简化模型,使用了只读属性. 1 Private arr(3) As Integer 2 3 Public Property Get ArrValue(Index As Integer) As Integer 4 ArrValue = arr(Index) 5 End Property 6 7 '初始化ar

ReentrantLock 与 synchronized 一点区别

ReentrantLock 与 synchronized 相比主要特性: 1.等候时间锁; 2.可中断锁; 3.多个条件变量; 等候时间锁实现主要通过 reentrantlock.tryLock(5,TimeUnit.SECONDS)方法实现; 多个条件变量可通过reentrantlock.newCondition()   new出多个实例实现; 可中断锁在BlockingQueue中经常被用到,简单通过代码理解 package net.flyingfat.lock; import java.u

DLL中__declspec(dllexport)和.def(模块定义文件)定义导出函数的一点区别

原想是不在DLL中使用.def文件的,直接在需要导出的函数前加__declspec(dllexport)修饰.但在是要导出STDAPI __declspec(dllexport) DllGetClassObject的时候,就提示"warning C4518: “__declspec(dllexport ) ” : 此处遇到意外的存储类或类型说明符:被忽略"(我用的是vc.net 2003). STDAPI这个宏扩展出来是extern "C" HRESULT __st