zoukankan      html  css  js  c++  java
  • Rxjsconcat

    concat( observable1,observable2,observable3,...,)

    函数功能:

    将多个可观察对象合并成一个可观察对象,调用该对象的时候,会依次调用该对象内部合并的可观察对象,当前调用的可观察对象(内部)数据完成后,继续订阅下一个可观察对象的数据。

    参数:

    多个可观察对象用 ‘,’分割,或者传入可观察对象数组

    返回结果:

    可观察对象

    示例:

    1 const ob1=of(1,2,3,4); 
    2 const ob2=from([5,6,7,8]);
    3 concat(ob2,ob1).subscribe(num=>{
    4    console.log(num);
    5 });

    上述代码中,定义两个可观察对象,通过 concat将两个可观察对象合并成一个可观察对象,并订阅该可观察对象,可以看到订阅结果按照合并顺序,依次发送出来数据,发送数据分别是:5,6,7,8,1,2,3,4。上述代码是同步完成的,下面介绍异步可观察对象合并相关知识。

    // 定义 Observable promiseA 
    const promiseA = from(this.http.get(this.urls[0]));
    
    // 定义 Observable promiseB
    const promiseB = from(this.http.get(this.urls[1]));
    
    // 订阅 promiseA (异步)
    promiseA.subscribe(result => {
          setTimeout(()=>{
            console.log('start promiseA');
            console.log(result);
            console.log('end promiseA');
          },1000)
        })
    
    // 订阅 promiseB(同步)
    promiseB.subscribe(result => {
          console.log('start promiseB');
          console.log(result);
          console.log('end promiseB');
        });

    上述代码中,定义了两个  Observable ,当订阅他们的时候,先订阅的是 promiseA,但是因为 promiseA 中含有异步方法,所以返回B的订阅结果,再返回A的订阅结果,程序运行结果是:

    start promiseB
    result
    end promiseB
    start promiseA
    result
    end promiseA
    现在利用 concat进行代码合并
    1   concat(promiseA,promiseB).subscribe(x=>{
    2       console.log(x);
    3     })

    上述代码先返回  promiseA的订阅结果数据,再返回 promiseB的订阅结果数据,如果 promiseA 的数据没有完全返回过来,不会订阅 promiseB 中的数据

     
  • 相关阅读:
    实验-继承&super.doc
    Python库
    Github高级搜索
    代码报错记录
    编程问题解决
    百科
    【Android】添加依赖包
    【Android】导航栏(加图片icon)和不同页面的实现(viewpager+tablayout)
    【Android】Android Studio真机调试的问题统整
    【AD】自己画板的备忘
  • 原文地址:https://www.cnblogs.com/wyjblog/p/15561266.html
Copyright © 2011-2022 走看看