我正在尝试检查效果中的条件并根据条件结果分派不同的操作。条件参数是从 Store 和 API 调用获得的,如下所示。
@Effect()
// error here - Observable<void> is not assignable to type Observable<Action>
loadUserSkills$: Observable<Action> = this.actions$
.ofType(UserActionTypes.REQUEST_USER_SKILLS)
.withLatestFrom(this.store$)
.map(([action, storeState]) => {
this.skillsService.getUserSkillsCacheVersion().
map((cacheVersion) => {
if (cacheVersion === storeState.users.cacheVersion.userSkills) {
return new UsersActions.RequestUserSkillsFromStore();
} else {
return new UsersActions.RequestUserSkillsFromServer();
}
});
});
这里有什么不正确的?
我通过稍微修改效果来修复它,然后 ForkJoined observable 如下所示。
@Effect()
loadUserSkills$: Observable<Action> = this.actions$
.ofType(UserActionTypes.REQUEST_USER_SKILLS)
.withLatestFrom(this.store$)
.map(([, storeState]) => storeState.users.cacheVersion.userSkills)
.switchMap((currentCacheVersion) =>
forkJoin([of(currentCacheVersion), this.skillsService.getUserSkillsCacheVersion()]))
.map((data: any) => {
const [currentCacheVersion, latestCacheVersion] = data;
if (latestCacheVersion !== 0 && currentCacheVersion === latestCacheVersion) {
return new UsersActions.RequestUserSkillsFromStore();
} else {
return new UsersActions.RequestUserSkillsFromServer();
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句