**已关闭。**此问题为not reproducible or was caused by typos。它目前不接受回答。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
16天前关闭
Improve this question的
假设我有这样的东西:
const exampleFunction = () => {
const fetchActions = someArray.map(() => {
dispatch(action()).then(response => {
if (response?.data) {
dispatch(subAction({response: response.data}))
}
})
})
return Promise.all(fetchActions)
.then(()=> dispatch(finalAction()))
}
字符串
我的问题是,当我分派我的finalAction时,所有的action都被分派/解决了,但subAction却没有。如何在所有操作和子操作都已解析时才执行分派(finalAction())?
1条答案
按热度按时间vd8tlhqk1#
问题是,当所有
promises
都解析时,Promise.all([...promises])
解析,但你的fetchActions
并不是一个真正的promise数组(你想要的),因为它们有 * 孤立的promise *,promise链断开。为了再次连接链,需要添加return
。字符串
请参阅here以了解有关promise chaining的更多信息。
基本上,这个想法是:如果你想让一个函数在它内部调用的promise被解析后再解析,你需要
return
那个promise。举例来说:
型
上面的
Promise.all
立即解析,而不等待promiseY
或promiseZ
,因为它们是“孤立的promise”。为了等他们,应该是这样的:
型