我想等待ngrx中的存储调度完成。然后,我想执行下一行语句,即同步调用。
我尝试了以下方法,效果如预期。问题是,延迟(2500(并不完全是准确的时间。有时,完成存储调度代码行可能需要或多或少的时间。有没有更好的方法来处理它,以便在这个.store.dispatch…完成后执行return of(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;
}
)
}
我被困在上面的问题上好几天了,不知道怎么才能逃脱。真的很感谢你的提前帮助。再次感谢!
你看过效果吗?
有了效果,你就可以得到调度的动作,并在减速器应用它们之后做一些事情。我建议重新编写代码,只调度操作,并根据原始调度的结果实现一个处理下一步操作的效果。