我想从我的效果中多次分派(dispatch)一个 Action ,为此我使用 concatMap
,但是当我发送相同的操作时,它会在下一次发送时被取消。有没有办法在之前的分派(dispatch)完成时分派(dispatch)一个 Action 。
下面的代码将有助于更好地理解问题。
@Effect()
setCategory$ = this.actions$
.ofType(GET_SESSION_AD_SUCCESS)
.concatMap((action: Action) => {
const category = action.payload;
const categoryPath = category.path;
const categoryDispatchArray = [];
categoryPath.forEach((path, index) => {
categoryDispatchArray.push({
type: GET_SUBCATEGORIES_BY_PARENT,
payload: { categoryId: path.id, index }
});
})
return dispatchArray;
}
最佳答案
我认为您的问题是 concatMapped Observable 在传递给它的最后一个 Observable 关闭时关闭。您需要的是mergeMap
(又名 flatMap
)在这里。
我也会使用 .map
创建 dispatchArray:
@Effect()
setCategory$ = this.actions$
.ofType(GET_SESSION_AD_SUCCESS)
.mergeMap((action: Action) => {
const category = action.payload;
const categoryPath = category.path;
const categoryDispatchArray = categoryPath
.map((path, index) => ({
type: GET_SUBCATEGORIES_BY_PARENT,
payload: { categoryId: path.id, index }
});
return categoryDispatchArray;
}
关于angular - 如何从ngrx效果多次调度相同的 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45587533/