大佬教程收集整理的这篇文章主要介绍了angular – ngrx效果:由其他效果立即处理的一个效果调度的动作是什么?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
>开始
>不由减速机处理(无状态变化)
> ngrx Effect调用异步任务并映射到succesS或ERROR
>成功
>由减速机处理
> ngrx效果映射到ADVANCE
>进展
>未由减速机处理
> ngrx效果导航到不同的路线
>错误
>由减速机处理
>没有效果
问题是捕获ADVANCE的效果似乎在处理succesS的reducer之前运行
@Effect() start$= this.actions$ .ofType('START') .map(toPayload) .switchMap(input => doAsyncTask(input) .map(result => ({type: 'succesS',payload: result})) .catch(error => ({type: 'ERROR',payload: error}))); @Effect() success$= this.actions$ .ofType('succesS') .map(() => ({type: 'ADVANCE'})); @Effect({dispatch: falsE}) advance$= this.actions$ .ofType('ADVANCE') .withLatestFrom(this.store$.SELEct(state => state.routE)) .map(action_route => action_route[1]) .do(route => this.router.navigate([route.foo.bar]));
我得到的错误是无法读取null的属性’bar’.属性foo由处理succesS的reducer设置.
@Effect() success$= this.actions$ .ofType('succesS') .delay(1) .map(() => ({type: 'ADVANCE'}));
但是不得不加上这个延迟对我来说没有意义.
>成功效果
> ADVANCE效果(显示route.foo === null)
> succesS减速机(显示route.foo ===的东西)
>错误
我期望succesS效果和succesS减速器在ADVANCE效果之前运行.
难道我做错了什么?
期望reducers以与调度它们相同的顺序处理操作是不正确的吗?
版本:
> @ angular / cli:1.0.0-beta.32.3
>节点:7.5.0
> os:darwin x64
> @ angular / common:2.4.7
> @ angular / compiler:2.4.7
> @ angular / core:2.4.7
> @ angular / forms:2.4.7
> @ angular / http:2.4.7
> @ angular / platform-browser:2.4.7
> @ angular / platform-browser-dynamic:2.4.7
> @ angular / router:3.4.7
> @ angular / cli:1.0.0-beta.32.3
> @ angular / compiler-cli:2.4.7
> @ ngrx / core @ 1.2.0
> @ ngrx / effects @ 2.0.0
> @ ngrx / store @ 2.2.1
> rxjs:5.1.1
>不,我不认为你做错了什么.
>那个顺序似乎合乎逻辑,但显然你现在不能指望这样
似乎有一个导致此行为的错误.您很可能正在体验它,因为您直接映射到另一个动作.通常,如果您有异步操作或类似的操作,则reducer有时间在听取下一个操作开始的效果之前完成.
也许不是您问题的一部分,但是您指定问题的解决方案是在您的有效负载的帮助下直接在succesS中导航到您的新路由,或者将有效负载传递给ADVANCE.
> https://github.com/ngrx/effects/issues/58
> https://github.com/ngrx/store/issues/279
> / ReactiveX / rxjs / issues / 2155(链接到这个的声誉太小)
好像他们正在努力:)
以上是大佬教程为你收集整理的angular – ngrx效果:由其他效果立即处理的一个效果调度的动作是什么?全部内容,希望文章能够帮你解决angular – ngrx效果:由其他效果立即处理的一个效果调度的动作是什么?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。