Redux thunk: promessa de retorno da ação despachada
É possível retornar a promessa / sinal do criador da ação, resolvido quando o redux thunk enviou com êxito determinada ação?
Considere este criador de ações:
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})
});
}
}
Eu quero chamar alguma função de forma assíncronano componente depois de ligardoPost criador de ação quando o Redux envia ações POST_SUCCESS ou POST_ERROR. Uma solução seria passar o retorno de chamada para o criador da ação, mas isso tornaria o código confuso e difícil de entender e manter. Eu também poderia pesquisar o estado Redux no loop while, mas isso seria ineficiente.
Idealmente, a solução seria uma promessa, que deve resolver / rejeitar quando determinadas ações (neste caso, POST_SUCCESS ou POST_ERROR) forem despachadas.
handlerFunction {
doPost(data)
closeWindow()
}
O exemplo acima deve ser refatorado, para que closeWindow () seja chamado apenas quando doPost () for bem-sucedido.