首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于以往可观测性的开关可观测

基于以往可观测性的开关可观测
EN

Stack Overflow用户
提问于 2020-08-26 10:02:00
回答 2查看 175关注 0票数 0

我有一个可观测的A,它返回布尔可观测值,并且基于可观测A的值,我需要将它称为wither可观测B或C

代码语言:javascript
复制
observableA = of(true);

observableB(): observable<string> {
}

observableC(): observable<string> {
}

function value () {
   return observableA.pipe(map(value => {
     if(value) {
      return observableB();
     } else {
      return observableC();
    }

}))
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-31 12:30:21

为了区分哪些是可以观察到的,根据真实的价值来调用。示例如下所示

  • case =>真=>多项

  • case => false =>多项

代码语言:javascript
复制
import { of, Subject } from "rxjs";
import { map } from "rxjs/operators";

const observableInvokeOnTruthy$ = of(1, 2, 3, 4, 5);
const observableInvokeOnFalsy$ = of(1, 2, 3, 4, 5);
const emitValuesSubject$ = new Subject();

emitValuesSubject$.subscribe(response => {
  if (response) {
    console.log("TRUTHY VALUE:");
    observableInvokeOnTruthy$
      .pipe(
        map(item => {
          return item * 10;
        })
      )
      .subscribe(result => {
        console.log(result);
      });
  } else {
    console.log("FALSY VALUE:");
    observableInvokeOnFalsy$
      .pipe(
        map(item => {
          return item * 20;
        })
      )
      .subscribe(result => {
        console.log(result);
      });
  }
});

emitValuesSubject$.next(false);
emitValuesSubject$.next(true);
票数 -1
EN

Stack Overflow用户

发布于 2021-02-09 07:56:15

您可以使用switchMap运算符而不是map

代码语言:javascript
复制
function value () {
   return observableA.pipe(switchMap(value => {
     if(value) {
      return observableB();
     } else {
      return observableC();
    }

}))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63595214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档