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 减慢应用程序

unity如何将人物的动画连接起来,就是做好的两个人物动画,通过一个按键可以控制这两个动作按顺序执行

ReactJS Flux Utils 组件

如何确保JavaScript的执行顺序