我想要链接一系列异步操作:
const update = (obj) => {
return (dispatch, getState) => {
return new Promise((resolve) => {
dispatch(updateTriggers(obj))
resolve()
})
}
}
const arrayifyTriggers = () => {
return (dispatch, getState) => {
return new Promise((resolve) => {
const obj = getState().Dashboard.triggersObj
const arr = Object.values(obj)
resolve(arr)
})
}
}
export function updateTriggers (trigger) {
return {
type: UPDATE_TRIGGERS,
payload: trigger
}
}
我希望将它们链接起来:
export const handleChange = (obj) => {
return (dispatch, getState) => {
dispatch(update(obj))
.then(dispatch(arrayifyTriggers()))
.then(arr => dispatch(receiveTriggers(arr)))
.catch(err)
}
}
但这不起作用;这是什么工作:
export const handleChange = (obj) => {
return (dispatch, getState) => {
dispatch(update(obj))
.then(dispatch(arrayifyTriggers())
.then(arr => dispatch(receiveTriggers(arr)))
)
}
}
所以我的问题是双重的。为什么它不能按照我的预期运作,并且我做错了什么?
一般来说,一起使用thunk和Promise非常难以理解,所以即使是关于使用这些内容的最佳实践的一些具体想法也会受到赞赏。
干杯!