0

我正在使用带有 redux-angular 的 redux。我的用例是分两步获取数据:

  1. 获取用户课程
  2. 每门课程下载进度

我试过好几种方法,效果都一样。只有最后一个进度正在下载,其余的被取消。

我已将示例减少到最低限度:

this.userCoursesActions.fetchCourseProgress('java');
this.userCoursesActions.fetchCourseProgress('tj');
this.userCoursesActions.fetchCourseProgress('spring');

该函数如下所示:

fetchCourseProgress(url: string) {
    return this.ngRedux.dispatch({type: UserCourses/FETCH_USER_COURSE_PROGRESS + '/' + url, payload: {url}})
}

我认为一次可能只有一个给定类型的动作,所以现在每门课程的动作类型都不同。

我最终得到以下网络活动:

在此处输入图像描述

我现在怀疑这是相关的,但这是史诗般的代码:

  private createUserCourseProgressEpic() {
    return action$ => action$
      .pipe(
        filter((data: any) => {
          console.log('filter', data.type);
          return data.type.startsWith(TYPES.FETCH_USER_COURSE_PROGRESS);
        }),
        switchMap(({ payload }) => this.getUserProgressForCourseUrl(payload.url)
          .pipe(
            map(progress => this.actions.fetchCourseProgressSuccess( progress, payload.url)),
            catchError(error => {
              console.log('errorrr');
              this.logError(error);
              return of(this.actions.fetchCourseProgressFail(error));
            }),
          )
        )
      );
  }

所以基本上似乎有一种取消动作的机制,但我不知道如何禁用它。

4

1 回答 1

0

好的,找到了。这是switchMap史诗里面的操作员。‍♂️我已将其更改为mergeMap不取消之前的通话。

于 2021-08-19T18:19:06.137 回答