2016-11-18 198 views
1

我有一些流量操作,它们只是简单的AJAX调用,用来更新成功时的数据。reactjs/flux:按顺序执行操作(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.all()将帮助您将上次调用与前两次调用同步。确保两个submitNewEvent()submitNewExceptions()返回时,AJAX调用完成了解决一个承诺:

Promise.all([ 
    ReactActions.submitNewEvent(data), 
    ReactActions.submitNewExceptions(exception_objects) 
]).then(function() { 
    ReactActions.merge(data, exception_objects) 
}) 
+0

谢谢。那么我的Action的ajax在返回时是否需要用'Promise.resolve()'封装呢? – ApathyBear

+0

查看[关于Promises的MDN文章](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise)。他们给出了一些关于如何实现它们的很好的例子。 – Timo