【发布时间】:2019-03-24 00:38:19
【问题描述】:
我有一个 ngrx 元减速器,它可以像这样调整动作的有效负载:
export function doSomething(reducer) {
return (state, action) => {
action.payload = 'fred'
return reducer(state, action)
}
}
export const metaReducers: MetaReducer<State>[] = [doSomething]
这很好用。但是,我希望负载由异步 HTTP 请求的响应确定。像这样的:
export function doSomething(reducer) {
return (state, action) => {
// ASSUME THE HTTP SERVICE IS AVAILABLE AS MAKING THE HTTP SERVICE AVAILABLE IS NOT A PROBLEM (trying to keep the code simple for illustration)
this.http.get('/some/data').subscribe((res) => {
action.payload = res.data
return reducer(state, action)
})
}
}
但这不起作用。任何人都知道如何实现这一目标?谢谢
【问题讨论】:
-
这不就是特效的用途吗?
-
是的,但我想要一些通用的东西,所有动作都会触发,而不必为每个动作编写效果 - 或者你的问题可能有帮助 - 如果我不使用 ofType 过滤器,它可能只是工作
-
我很想知道这是否适合你。
-
我在这里提出了一个关于这个问题的功能请求github.com/ngrx/platform/issues/1649 - 它已经相当突然地关闭了,但已经请求重新打开它
-
是的,我也想要这个。即使用离子存储本地存储到 SQLite,这是异步的(在 SQLite 可用的设备上运行时)