我正在使用带有 redux-angular 的 redux。我的用例是分两步获取数据:
- 获取用户课程
- 每门课程下载进度
我试过好几种方法,效果都一样。只有最后一个进度正在下载,其余的被取消。
我已将示例减少到最低限度:
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));
}),
)
)
);
}
所以基本上似乎有一种取消动作的机制,但我不知道如何禁用它。