Angular 在执行下一行代码之前,是否有办法在ngrx中等待门店派送完成?

Angular 在执行下一行代码之前,是否有办法在ngrx中等待门店派送完成?,angular,ngrx,ngrx-store,ngrx-effects,Angular,Ngrx,Ngrx Store,Ngrx Effects,我想等待ngrx商店的发货完成。然后,我想执行下一行语句,即同步调用 我已经尝试了以下方法,效果如预期。问题是延迟(2500)并非都是准确的时间。有时,完成门店发货代码行可能需要或多或少的时间。是否有更好的方法来处理它,以便在完成这个.store.dispatch…之后执行(false)语句的返回 validateRules(isCompleteActivity : boolean) { this.isSubmitProgress = true; this.transmitSubscriptio

我想等待ngrx商店的发货完成。然后,我想执行下一行语句,即同步调用

我已经尝试了以下方法,效果如预期。问题是延迟(2500)并非都是准确的时间。有时,完成门店发货代码行可能需要或多或少的时间。是否有更好的方法来处理它,以便在完成这个.store.dispatch…之后执行(false)语句的返回

validateRules(isCompleteActivity : boolean) {
this.isSubmitProgress = true;
this.transmitSubscription = this.menuService.getRules(this.parameters, 
  statusTypeOptions.Error).pipe(
    switchMap(x => {
      if (x.ruleOutput.length > 0) {
        return of(false);
      } else { 
        return this.saveService.saveToGrid(null, null).pipe(
          switchMap(successful=> {
            if (successful) {
              if (this.center == '002' && (this.activity == 'AAA' || this.activity == 'BBB')) {
                this.store.dispatch(new fromActions.LoadDetails(this.parameters, 
                isCompleteActivity));
                delay(2500);
                return of(false);
              }
              else {
              return this.flowService.completeAction();
              }
            }
              return of(false);
          })
        );
      }
    })
  ).subscribe(isSuccess => {
    this.isSubmitProgress = false;
    if (isSuccess) {
      this.bridgeService.closeWindow();
    }
  },
    error => {
    this.isSubmitProgress = false;
    }
  )
}

我被上述问题困扰了几天,不知道怎样才能摆脱它。非常感谢你的帮助。再次感谢你

你看过效果了吗


你可以得到分派的动作,并在减速器应用它们之后做一些事情。我建议重新编写代码,只发送操作,并根据原始发送的结果实现一个效果来处理下一步要做的事情。

-如果这样,请检查此项helps@Tejeshree它有点类似,但我必须返回它,因为我订阅(.subscribe)以检查返回布尔值以关闭Window()。如果我在效果中这样做,它不会返回,也不会再次等待,但会转到订阅。您可以创建一些工作示例来调试它吗?