Ngrx存储-发出动作后延迟抽头

时间:2019-05-28 10:49:24

标签: angular rxjs ngrx

使用Ngrx存储,我有以下2种效果:

@Effect({ dispatch: false })
    toastSuccess$ = this.actions$
        .pipe(
            ofType(TOAST_SUCCESS),
            map((action: any) => this.toastr.success(action.payload, 'Success'))
        );

@Effect()
    appContextChanged$ = this.actions$
        .pipe(
            ofType(UPDATE_USER_APP_CONTEXT_SUCCESS),
            mergeMap(() => of(
                { type: TOAST_SUCCESS, payload: 'App context updated successfully!' })),
            tap(() => location.reload()),
            catchError(() => of({ type: UPDATE_USER_APP_CONTEXT_FAILED }))
        )

我想做的是将tap location.reload()延迟1000毫秒(因此,面包片显示一秒钟,然后刷新页面),但是我尝试使用{{ 1}}到处都没有成功。如何在敬酒效果后延迟刷新页面,即delay

1 个答案:

答案 0 :(得分:0)

为此创建一个不同的效果,以便appContextChanged$可以完成并通知您的toastSuccess效果:

@Effect({dispatch: false})
reload$ = this.actions$
  .pipe(
    ofType(TOAST_SUCCESS),
    tap(() => location.reload())

似乎toastr.success返回一个动作,是真的吗?在这种情况下,您可以代替Toast_sucess运算符中的ofType来监听该操作。