redux-сага не обрабатывает несколько экземпляров одних и тех же действий одновременно - PullRequest
0 голосов
/ 22 марта 2019

Я использую sagas для загрузки различного количества медиа-файлов. Таким образом, вы можете динамически добавлять больше медиа-файлов. Проблема, с которой я сталкиваюсь, заключается в том, что когда файлы загружаются, не дожидаясь завершения предыдущего, предыдущие отправленные действия теряются, отправляется новое. По сути, это похоже на одновременное выполнение действий с уловом того же типа действия UPLOAD_ACTION.

Код выглядит примерно так:

export default function* root() {
  yield all([takeLatest(LOGIN_REQUEST, login), ..., takeLatest(UPLOAD_REQUEST, upload)]);
}

function* uploadSlide({payload}) {
  try {
    const response = yield call(
      uploadApi,
      payload
    );
    yield put({type: SUCCESS, payload: response});
  } catch (error) {
    yield put(type: FAILURE);
  }
}

Я пробовал разные альтернативы, такие как takeEvery или channel, но они не работали.

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 22 марта 2019

Вместо takeLatest необходимо использовать takeEvery. takeEvery Создает сагу о каждом действии, отправляемом в Магазин, которое соответствует шаблону.

1 голос
/ 24 марта 2019

Я столкнулся с той же проблемой при загрузке многих файлов.

Использование takeEvery вместо takeLatest.

takeLatest предназначено для отмены предыдущих вызовов, что точночто вы страдаете.

Я думаю, что есть ошибка в другой части вашей системы.

...