2016-11-18 82 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