Є store.dispatch в Redux синхронним або асинхронним


101

Я розумію, що це основне питання, але мені не пощастило знайти відповідь в іншому місці.

Є чи store.dispatchсинхронний або асинхронний в Redux?

Якщо це асинхронно, чи є можливість додати зворотний виклик після того, як дія буде розповсюджена, як це можливо React?

Відповіді:


87

AFAIK, диспетчерська дія є синхронною. У випадку, якщо ви бажаєте звертатися до асинхронного дзвінка, ви можете скористатися програмою thunk-middleware у режимі редукцій, де відправлення надається як функція зворотного виклику, яку ви можете викликати відповідно до вашої зручності. Для отримання додаткової інформації перегляньте цю відповідь на SO від самого автора: Як відправити дію Redux з таймаутом?


67

Ніхто не знає краще, ніж сам код . =) Як ви бачите dispatch, абсолютно синхронний. Єдине попередження тут - це те, що магазин enhancersможе (і робити) dispatchметод заміни . Наприклад, погляньте на applyMiddlewareпідсилювач , він дозволяє вам підключити проміжні програми, замінивши dispatchметод за замовчуванням на його власну реалізацію. Хоча я ніколи не бачив жодного Redux, enhancerякий би фактично видалив синхронний характер dispatch.


1
Вам слід оновити посилання застосунку середнього програмного забезпечення до https://github.com/reduxjs/redux/blob/master/src/applyMiddleware.ts#L19 (через скорочення міграції з js -> ts, я не можу внести зміни оскільки це <6 символів). Або, можливо, вам слід посилатися на комісію, коли вони все-таки використовували js, як у вашому code itselfпосиланні, що призведе до незрозумілих зв’язків із-за аспекту "постійної посилання" комітетів.
користувач7413060
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.