RXJS有条件地致电可观察到

发布于 2025-01-24 14:43:44 字数 721 浏览 5 评论 0原文

  const observable$ = iif(() => this.shippingTabModified,
      //Shipping Tab Modified True
      of(this.updateShippingInfo())
        .pipe(),
      //IF Shipping Tab Not Modified    
      of(this.shippingInfoService.getShipmentInfoByCardIdObservable(this.data.CardId))
        .pipe()
    )

    observable$.subscribe();

从上面的代码中,我想实现以下方案

if(foo === true)
{
  updatemethod()
}
// if foo is true and update method is executed we need to wait until update method is finished then go to second method

// If foo is false we can call second method without waiting
secondmethod();

,但是从我上面写的RXJS代码中,它总是转到更新方法,它不是考虑this.shippingtabmodified的值。

  const observable$ = iif(() => this.shippingTabModified,
      //Shipping Tab Modified True
      of(this.updateShippingInfo())
        .pipe(),
      //IF Shipping Tab Not Modified    
      of(this.shippingInfoService.getShipmentInfoByCardIdObservable(this.data.CardId))
        .pipe()
    )

    observable$.subscribe();

From above code i want to achieve following scenario

if(foo === true)
{
  updatemethod()
}
// if foo is true and update method is executed we need to wait until update method is finished then go to second method

// If foo is false we can call second method without waiting
secondmethod();

But from rxjs code which i wrote above, it always go to update method it is not considering the value of this.shippingTabModified

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半岛未凉 2025-01-31 14:43:44

您可以利用concat功能,然后做类似的

const observables$ = condition ? [obs$1, obs$2] : [obs$2];

concat(...observables$).subscribe();

事情

You can leverage on the concat function and do something like this

const observables$ = condition ? [obs$1, obs$2] : [obs$2];

concat(...observables$).subscribe();

Cheers

(り薆情海 2025-01-31 14:43:44

为什么不只是使用


const obs$ = this.shippingTabModified ? 
  of(this.updateShippingInfo()) : 
  this.shippingInfoService.getShipmentInfoByCardIdObservable(this.data.CardId);

obs$.subscribe();

编辑

在条件下致电:

const obs$ = of(this.updateShippingInfo()).pipe(
  switchMap(res => this.shippingTabModified ?
    of(res) :
    this
      .shippingInfoService
      .getShipmentInfoByCardIdObservable(this.data.CardId)
)

Why not just use


const obs$ = this.shippingTabModified ? 
  of(this.updateShippingInfo()) : 
  this.shippingInfoService.getShipmentInfoByCardIdObservable(this.data.CardId);

obs$.subscribe();

EDIT

Calling on condition :

const obs$ = of(this.updateShippingInfo()).pipe(
  switchMap(res => this.shippingTabModified ?
    of(res) :
    this
      .shippingInfoService
      .getShipmentInfoByCardIdObservable(this.data.CardId)
)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文