Можно ли вернуть обещание/сигнал от создателя действия, разрешенного, когда Redux thunk успешно отправил определенное действие?Redux thunk: вернуть обещание от отправленного действия
Рассмотрит действие создателя:
function doPost(data) {
return (dispatch) => {
dispatch({type: POST_LOADING});
Source.doPost() // async http operation
.then(response => {
dispatch({type: POST_SUCCESS, payload: response})
})
.catch(errorMessage => {
dispatch({type: POST_ERROR, payload: errorMessage})
});
}
}
Я хочу вызвать некоторую функцию асинхронно в компоненте после вызова doPost действия создателя, когда Redux имеет либо отправлено POST_SUCCESS или POST_ERROR действие. Одним из решений было бы передать обратный вызов самому создателю действия, но это сделало бы код грязным и трудным для понимания и поддержки. Я мог бы также опросить состояние Redux во время цикла, но это было бы неэффективно.
В идеале решение будет представлять собой обещание, которое должно быть разрешено/отклонено при отправке определенных действий (в данном случае POST_SUCCESS или POST_ERROR).
handlerFunction {
doPost(data)
closeWindow()
}
Приведенный выше пример должен быть переработан, так CloseWindow() вызывается только тогда, когда doPost() является успешным.
Может ли я гарантировать, что то внутри действия создателю вызывается раньше внутри handlerFunction ? –
Да. Код внутри 'handlerFunction' всегда будет вызываться после кода' dispatch'. – 1ven
Кроме того, по какой-либо причине пример возвращает объект Action, отправленный внутри, а не ответ –