如果第一个observable为null,则angular rxjs仅订阅第二个Observable

普拉蒂克·杰伊斯瓦尔

我有两种返回可观察值的方法。如果第一个返回一些数据,则无需调用第二个方法。但是,如果第一个方法返回null,则仅调用第二个方法。

getdefaultAddress(id) : Observable<Address[]> { 
    return this.http.get<Address[]>(this.url + 'users/' + id + '/addresses' + '?filter[where][default]=true')
  }

getFirstAddress(id): Observable<any>{
    return this.http.get<any>(this.url + 'users/' + id +'/addresses?filter[limit]=1'  )
  }

在使用if-else订阅第一个可观察值之后,我可以轻松地做到这一点。喜欢

this.getdefaultAddress(id).subscibe(data =>{
    if(data) {
      // do something
    }

    else {
      this.getFirstAddress(id).subscibe(data =>{
        // do something
      })
    }
  })

现在,如何在不真正订阅第一个可观察值的情况下进行检查?任何rxjs运算符?

先感谢您

马丁

最好使用例如concatMap

import { EMPTY } from 'rxjs';
import { concatMap } from 'rxjs/operators';

this.getdefaultAddress(id)
  .pipe(
    concatMap(data => data === null ? EMPTY : this.getFirstAddress(id)),
  )
  .subscribe();

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

运行第二个 Observable 是第一个 Observable 是假的

将Observable与第二个Observable结合起来,第二个Observable使用第一个的结果

从android中的第一个observable接收结果后如何启动第二个observable?

如果第一个查询结果为null,请转到plsql中的第二个查询

RxJs Angular 7 HttpClient与forkJoin多个POST删除第二个订阅吗?

XPath-仅第二个级别元素的第一个元素

如何仅选择第二个li元素的第一个孩子

如何调用两个方法,第一个返回 void observable,第二个返回 observable?

如何测试对Observable的订阅-我何时需要done(),何时必须提供第二个参数进行订阅?

如果第一个为空,则switchIfEmpty不会从第二个可观察值发出值

Excel,如果第一个为空,则使用第二个索引匹配

索引/匹配-如果第一个值为空白,则查找第二个值

如果第一个为真,则MySQL不读取第二个OR条件

如果第一个元素为空,则选择第二个元素的 XPath

如果第一个参数为false,php是否会评估or语句的第二个参数?

Rxjava zip 运算符通过使用第一个 Observable android 检查数据来过滤第二个 Observable

如果第一个函数失败,则应用第二个函数

如果第一个输入聚焦,则将第二个输入

Angular 2(+ Dart)内联条件:如果第一个条件为假,是否评估第二个条件?怎么解决?

第一个为假时测试第二个条件

SQL第二个INSERT查询,其ID为第一个

根据第一个的值在第二个可观察对象上调用订阅

使用第二个 API 的 observable 的问题

等到第二个Observable发出

一个if语句中有两个条件,如果第一个条件为假,第二个条件是否重要?

从NGRX / RXJS中的组件完成第一个操作后,调度第二个操作

如果有标签,请仅选择第二个在前标签,或者仅选择第一个

返回第一个表中的所有数据,如果存在,则仅返回第二个表中的1个数据

使用多个 API 调用创建 Redux Observable Epic - 将第一个的结果传递到第二个