Store.dispatch in Redux è sincrono o asincrono


101

Mi rendo conto che questa è una domanda fondamentale, ma non ho avuto fortuna a trovare la risposta altrove.

È store.dispatchsincrono o asincrono Redux?

Nel caso sia asincrono c'è la possibilità di aggiungere un callback dopo che l'azione è stata propagata come è possibile con React ?

Risposte:


87

AFAIK, l'azione di invio è sincrona. Nel caso in cui si desideri indirizzare la chiamata asincrona, è possibile utilizzare il middleware thunk in redux, dove l'invio viene fornito come una funzione di callback che è possibile richiamare secondo la propria convenienza. Per maggiori informazioni, controlla questa risposta su SO dall'autore stesso: come inviare un'azione Redux con un timeout?


67

Nessuno sa meglio del codice stesso . =) Come puoi vedere dispatchè assolutamente sincrono. L'unico avvertimento qui è che il negozio enhancerspuò (e fa) il dispatchmetodo sostitutivo . Ad esempio, dai un'occhiata a applyMiddlewareEnhancer , ti consente di collegare i middleware sostituendo il dispatchmetodo predefinito con la sua implementazione. Anche se non ho mai visto alcun Redux enhancerche avrebbe effettivamente rimosso la natura sincrona di dispatch.


1
È necessario aggiornare il collegamento di applicazione middleware a https://github.com/reduxjs/redux/blob/master/src/applyMiddleware.ts#L19 (a causa della migrazione di redux da js -> ts, non posso apportare la modifica poiché è <6 caratteri). Oppure, forse dovresti fare riferimento a un commit quando utilizza ancora js come nel tuo code itselflink, che sarebbe deadlink a causa dell'aspetto 'permalink' dei commit.
user7413060
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.