2016-11-18 5 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) 

Я хотел бы выполнить первые два действия полностью (то есть ответ 200 успеха от метода AJAX) до трети действие выполнено.

Каков наилучший способ сделать это в подобной Flux архитектуре? Должен ли я выбирать обещания? Не могли бы вы привести пример?

ответ

1

Да, обещания - хороший подход для решения таких проблем.

Promise.all() поможет вам синхронизировать последний вызов с предыдущими двумя. Убедитесь, что оба submitNewEvent() и submitNewExceptions() возвращает обещание, что не будет решен, когда вызовы AJAX завершены:

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

Спасибо. Итак, аякс моего действия нужно обернуть с помощью 'Promise.resolve()' когда его вернулось? – ApathyBear

+0

Ознакомьтесь с [статьей MDN о обещаниях] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise). Они дают несколько хороших примеров того, как их реализовать. – Timo

 Смежные вопросы

  • Нет связанных вопросов^_^