Меняет ли применение промежуточное ПО Redux-Thunk для редукса все действия, которые должны выполняться асинхронно? - PullRequest
0 голосов
/ 07 октября 2019

У меня есть проект, в котором я применил промежуточное программное обеспечение redux-thunk к моему магазину редуксов. Теперь в моем коде есть несколько thunks, и они также отправляются, но они возвращают ThunkAction<Promise<void>, void, void, AnyAction>, поэтому я предполагаю, что это асинхронно.

В других местах моего кода я напрямую вызываю метод отправки нахранить. Являются ли эти действия также асинхронными в результате применения промежуточного программного обеспечения или они остаются синхронными?

Например, если я сделаю:

store.dispatch(someAction);

Будет ли это по-прежнему синхронно?

Заранее спасибо.

1 Ответ

0 голосов
/ 08 октября 2019

Да.

По умолчанию отправка выполняется на 100% синхронно.

Если вы добавляете промежуточное ПО, промежуточное ПО может изменять, задерживать или останавливать выполнение действия черезконвейер диспетчеризации.

Однако в этом случае промежуточное ПО redux-thunk не делает ничего асинхронного. Он просто проверяет, является ли «действие» на самом деле функцией, и, если это так, выполняет ее немедленно:

function createThunkMiddleware(extraArgument) {
  return ({ dispatch, getState }) => (next) => (action) => {
    if (typeof action === 'function') {
      return action(dispatch, getState, extraArgument);
    }

    return next(action);
  };
}

Если применяется промежуточное программное обеспечение thunk, store.dispatch(someThunkFunction) возвратит все, что возвращает функция thunk. Таким образом, если вы вернете обещание из thunk, это обещание будет возвращено из store.dispatch().

Для типов TS первый универсальный аргумент должен указывать ожидаемый тип возврата функции thunk. Однако вам, скорее всего, придется указать это самостоятельно - оно не должно появляться случайным образом.

...