【发布时间】:2018-01-19 06:24:44
【问题描述】:
我正在开发一个示例 Angular 2 应用程序,并使用 ngrx/store、ngrx/effects 进行状态管理。
下图描绘了我的应用程序的其中一个屏幕。
为了显示来自服务器的图书列表、类别和作者,对商店进行了以下调度调用。
this.store.dispatch(loadCatgories());
this.store.dispatch(loadAuthors());
this.store.dispatch(loadBooks());
下面是相关的效果
@Effect() authors$ = this.actions$
.ofType(AuthorActionTypes.LOAD_AUTHORS)
.switchMap(() => this.authorService.loadAuthors())
.map(authors => loadAuthorsSuccess(authors));
@Effect() categories$ = this.actions$
.ofType(CategoryActionTypes.LOAD_CATEGORIES)
.switchMap(() => this.service.loadCategories())
.map(categories => loadCategoriesSuccess(categories));
@Effect() books$ = this.actions$
.ofType(BookActionTypes.LOAD_BOOKS)
.switchMap(() => this.bookService.loadBooks())
.map(books => loadBooksSuccess(books));
我的问题是
上述方法是否正确或有更好的方法,由于某些原因,有时书籍列表会显示第二次然后消失。
如果我的理解是正确的,以上三个dispatch是并行发生的,如果我需要它们一个接一个发生怎么办。
【问题讨论】:
-
1.到目前为止,您发布的代码看起来不错 - 可能在您的减速器或选择调用之一中存在问题。 - 2. 为什么一个接一个地打这些电话很重要?其余调用似乎并不相互依赖。
标签: angular ngrx ngrx-effects