Задать вопрос
GreyCrew
@GreyCrew
Full-stack developer

Как вызвать put внутри Promise.then в redux-saga?

Как вызвать put внутри Promise.then?

Есть сага, которая делает некий запрос, он может выполняться долго и вывалится с ошибкой, а может вообще не выполнится и зависнуть, я решил его убивать через 5 сек по таймауту
const promise = new Promise((resolve, reject) => {
        setTimeout(() => {
          reject("result");
        }, 5000)
        const openShift = JSON.parse(window.kkt.writeAndPrint(JSON.stringify({'openShift': data})))
        resolve(openShift)
      })

      yield promise
        .then(
          result => {
            if (result.status == 'ok') {
              put({
                type: CHANGES_CHANGE_SUCCESS,
                payload: payload
              })

              const timeStamp = {'key': 'openChangeTime', 'value': JSON.stringify(moment())}
              const stor = storage.settingsSetCurrent(JSON.stringify(timeStamp))
              console.log(stor)
              kkt.openCashDrawer()
              notify('Смена открыта', 'success')
              put({
                type: LOADING_SUCCESS,
                payload: false
              })
            } else {
              notify('Ошибка', 'error')
            }
          },
          error => {
            notify("Ошибка: " + error, "error")
          }
        )
  • Вопрос задан
  • 123 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
rockon404
@rockon404 Куратор тега Redux
Frontend Developer
function* runPromise() {
  try {
    const result = yield call(promise);
    yield put({
       type: CHANGES_CHANGE_SUCCESS,
       payload: result,
    });
  } catch (error) {
    notify("Ошибка: ", error);
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы