【问题标题】:Ternary Operator Javascript in Else case Do Nothing三元运算符 Javascript 在其他情况下什么都不做
【发布时间】:2021-10-17 21:59:03
【问题描述】:

我正在根据 IF 条件进行具有 3 个参数的服务调用,否则设置 5 个参数。需要使用三元运算符来设置第 4 个参数。否则不要设置任何东西。 下面是代码

if (allow) {
   return forkJoin(param1, param2, param3) // Here i need to set param4 based on other condition
} else {
   return forkJoin(param1, param2, param3, param4, param5)
}

我正在尝试使用以下设置

if (allow) {
   return forkJoin(param1, param2, this.vipPerson ? param4 : null, param3)
   // But using ternary operator i cant send NULL if this.vipPerson is False. What to do so that 
   // if vipPerson is TRUE it should be like this
   return forkJoin(param1, param2, param3, param4)
   // Else it should be like this 
   return forkJoin(param1, param2, param3)
}

我无法发送 NULL。找到不发送任何东西的方法,以防万一它是假的

【问题讨论】:

    标签: javascript angular rxjs


    【解决方案1】:

    forkJoin 接受可观察的数组,null 是不可观察的。将其更改为:-

    of(null)
    

    你需要从 rxjs 导入。

    【讨论】:

    • 我无法发送 NULL。找到不发送任何东西的方法,以防万一它是假的
    • 然后发送 EMPTY,从 rxjs 导入 EMPTY。
    【解决方案2】:

    一种更具声明性的方式是定义两个可能的 observable,然后使用 iif() 运算符运行条件。虽然它不完全是三元的,但它与任何 RxJS 运算符一样接近。

    const basic$ = forkJoin(param1, param2, param3);
    const vip$ = forkJoin(param1, param2, param3, param4);
    
    return iif(()=>this.vipPerson, vip$, basic$)
    

    https://www.learnrxjs.io/learn-rxjs/operators/conditional/iif

    【讨论】:

    • 感谢将其标记为答案,它按要求对我有用。如果可能的话,您还可以评论一下如何在不使用 RxJs 的情况下做同样的事情
    • 你也可以使用三元表达式来声明响应return !!this.vipPerson ? vip$ : basic$
    猜你喜欢
    • 1970-01-01
    • 2015-08-31
    • 2019-08-08
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多