Es store.dispatch en Redux sincrónico o asincrónico

101

Me doy cuenta de que esta es una pregunta básica, pero no tuve suerte para encontrar la respuesta en otro lugar.

¿Es store.dispatchsíncrono o asíncrono Redux?

En caso de que sea asincrónico, ¿existe la posibilidad de agregar una devolución de llamada después de que la acción se haya propagado como es posible con React?

ps-aux
fuente

Respuestas:

87

AFAIK, la acción de despacho es sincrónica. En caso de que esté dispuesto a abordar la llamada asincrónica, puede usar el middleware thunk en redux, donde el envío se proporciona como una función de devolución de llamada que puede invocar según su conveniencia. Para obtener más información, consulte esta respuesta en SO por el propio autor: ¿Cómo enviar una acción de Redux con un tiempo de espera?

agpt
fuente
67

Nadie lo sabe mejor que el propio código . =) Como puede ver, dispatches absolutamente sincrónico. La única advertencia aquí es que la tienda enhancerspuede (y lo hace) sustituir el dispatchmétodo. Por ejemplo, eche un vistazo a applyMiddlewareenhancer , le permite conectar middlewares reemplazando el dispatchmétodo predeterminado con su propia implementación. Aunque nunca vi ningún Redux enhancerque realmente eliminaría la naturaleza sincrónica de dispatch.

fkulikov
fuente
1
Debe actualizar el enlace de aplicación de middleware a https://github.com/reduxjs/redux/blob/master/src/applyMiddleware.ts#L19 (debido a la migración de redux desde js -> ts, no puedo hacer la edición ya que tiene <6 caracteres). O tal vez debería hacer referencia a una confirmación cuando todavía usaban js como en su code itselfenlace, lo que sería un enlace muerto debido al aspecto de 'enlace permanente' de las confirmaciones.
user7413060