Ist es möglich, Versprechen/Signal vom Aktionsersteller zurückzugeben, behoben, wenn Redux thunk erfolgreich bestimmte Aktion ausgelöst hat?Redux-Thunk: Rückgabeversprechen von zugeordneter Aktion
diese Aktion Schöpfer Bedenken Sie:
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})
});
}
}
I nach dem Aufruf doPost Aktion Schöpfer eine Funktion asynchron in der Komponente aufgerufen werden soll, wenn Redux hat entweder versandt POST_SUCCESS oder POST_ERROR Aktionen. Eine Lösung wäre, den Rückruf an den Aktionsersteller selbst zu übergeben, aber das würde Code unordentlich und schwer zu erfassen und zu pflegen machen. Ich könnte auch den Redux-Zustand in while-Schleife abfragen, aber das wäre ineffizient.
Im Idealfall wäre die Lösung eine Verheißung, die behoben/abgelehnt werden sollte, wenn bestimmte Aktionen (in diesem Fall POST_SUCCESS oder POST_ERROR) ausgelöst werden.
handlerFunction {
doPost(data)
closeWindow()
}
Das obige Beispiel sollte Refactoring so Close() nur aufgerufen wird, wenn doPost() erfolgreich ist.
Kann ich diese dann in Aktion Schöpfer sicherzustellen, bevor dann in handler aufgerufen wird ? –
Ja. Der Code innerhalb von 'handlerFunction' wird immer nach 'dispatch'-Code aufgerufen. – 1ven
Aus irgendeinem Grund gibt Beispiel auch das Action-Objekt zurück, das dann innerhalb und nicht die Antwort gesendet wird –