我起作用,根据数据返回的内容,我不妨提交额外的操作。
使用this post中的信息,我可以通过以下操作返回两个操作...
public getData$ = createEffect(() => this.actions$.pipe(
ofType(myDataActions.getData),
map(() => this.isPollingActive = true),
mergeMap(() =>
this.myService.getAllData()
.pipe(
tap(data => this.previousResultsTimeUtc = data.previousResultsTimeUtc),
mergeMap(data => [
currentDayActions.getCurrentShiftSuccess(data.currentDay),
myDataActions.getDataSuccess(data)
]),
catchError(err => of(myDataActions.getDataFail(err)))
))
));
但是,理想情况下,我有时只想提交一个动作,
例如
...
mergeMap(data => [
if (data.currentDay !== undefined) // <-- how to do this
currentDayActions.getCurrentDaySuccess(data.currentDay),
myDataActions.getDataSuccess(data.data)
]),
所以,如果我得到数据,我只想提交currentDayActions.getCurrentDaySuccess
。
当然,以上是不正确的语法,但我不太明白如何在此处获取此“ if”。
非常感谢任何帮助。
最简单的方法是将if-else语句嵌套在mergeMap
运算符中
mergeMap(data => [
if (data.currentDay) {
return currentDayActions.getCurrentDaySuccess(data.currentDay);
} else {
return [
currentDayActions.getCurrentDaySuccess(data.currentDay),
myDataActions.getDataSuccess(data.data)
];
}
]),