reactjs/flux:按顺序执行动作(ajax)
Posted
技术标签:
【中文标题】reactjs/flux:按顺序执行动作(ajax)【英文标题】:reactjs / flux: execute actions (ajax) in order 【发布时间】:2017-04-02 17:28:44 【问题描述】:我有通量操作,它们只是 AJAX 调用,用成功的数据更新存储。
在我的组件中,我有一个使用这些操作的函数:
// Insert new event
ReactActions.submitNewEvent(data)
// Insert new exceptions
ReactActions.submitNewExceptions(exception_objects)
// Merge
ReactActions.merge(data, exception_objects)
我想在执行第三个动作之前完全执行前两个动作(意味着来自 ajax 方法的 200 成功响应)在执行第三个动作之前。
在类似 Flux 的架构中,最好的方法是什么?我应该选择承诺吗?你能举个例子吗?
【问题讨论】:
【参考方案1】:是的,Promise 是解决此类问题的好方法。
Promise.all()
将帮助您将最后一次通话与前两次通话同步。确保 submitNewEvent()
和 submitNewExceptions()
返回一个在 AJAX 调用完成时解决的承诺:
Promise.all([
ReactActions.submitNewEvent(data),
ReactActions.submitNewExceptions(exception_objects)
]).then(function()
ReactActions.merge(data, exception_objects)
)
【讨论】:
谢谢。那么我的 Action 的 ajax 返回时是否需要用Promise.resolve()
包裹?
查看MDN article about Promises。他们给出了一些很好的例子来说明如何实现它们。以上是关于reactjs/flux:按顺序执行动作(ajax)的主要内容,如果未能解决你的问题,请参考以下文章
ReactJS + Flux - 如何实现 toasts/notifications?
如何使 reactjs/flux/react-router spa 同构?
Reactjs/Flux/altjs Listen for Store Changes 减慢应用程序