Redux thunk: promesa de devolución de la acción enviada
¿Es posible devolver la promesa / señal del creador de la acción, resuelta cuando Redux thunk ha enviado con éxito cierta acción?
Considera este creador de acciones:
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})
});
}
}
Quiero llamar a alguna función de forma asincrónicaen el componente despues de llamardoPost creador de acciones cuando Redux ha enviado acciones POST_SUCCESS o POST_ERROR. Una solución sería pasar la devolución de llamada al creador de la acción, pero eso haría que el código fuera desordenado y difícil de comprender y mantener. También podría sondear el estado de Redux en el ciclo while, pero eso sería ineficiente.
Idealmente, la solución sería una promesa, que debería resolverse / rechazarse cuando se despachan ciertas acciones (en este caso POST_SUCCESS o POST_ERROR).
handlerFunction {
doPost(data)
closeWindow()
}
El ejemplo anterior debe ser refactorizado, por lo que closeWindow () se llama solo cuando doPost () es exitoso.