在Redux-Saga中处理多个相关请求-处理错误

问题描述 投票:0回答:1

给出了一组提议,我想向服务器发送许多http请求以创建它们。我正在使用redux-saga,我正在努力使它们顺序且相互依赖。

事实上,如果其中只有一个失败,我希望下一个失败:

我尝试过这种方式

function* handleCreateOffers(action: ReturnType<typeof createOffers>) {
  console.log(action.payload)

  try {
    const responses = action.payload.offers.map(offer => {
      httpCreateOffer('/createOffer', offer)
        .then(result => result)
        .catch(err => {
          throw new Error('Socket Event Timeout')
        })
    })
  } catch (err) {
    if (err instanceof Error && err.stack) {
      yield put(createOffersError(err.stack))
    } else {
      yield put(createOffersError('An unknown error occured.'))
    }
  }
}

但是,当我抛出错误时,它似乎并没有到达catch语句,而是继续滚动数组

谢谢

reactjs redux-saga
1个回答
0
投票

您可以尝试这样的事情:

function* handleCreateOffers(action: ReturnType<typeof createOffers>) {
  const offers = action.payload.offers.

  for (let i = 0; i < offers.length; i += 1) {
    try {
      const result = yield call(httpCreateOffer, '/createOffer', offers[i]);
    } catch (err) {
      if (err instanceof Error && err.stack) {
        yield put(createOffersError(err.stack))
      } else {
        yield put(createOffersError('An unknown error occured.'))
      }
      break;
    }
  }
}

您的错误处理将有所不同。重要的部分是break循环。

© www.soinside.com 2019 - 2024. All rights reserved.