【问题标题】:How to run parallel sagas synchrony如何运行并行 sagas 同步
【发布时间】:2019-08-19 18:23:06
【问题描述】:

我已将文件 saga 上传到服务器

function * uploadImageSaga (action: Object): Saga {
  const {name, id} = action

  const payload = {
      image: action.base64
    }

    //....upload....

  yield put(uploadFileSucc(id, name, result.link))
}

function * uploadImagesSagas (): Saga {
  yield all([
    takeEvery(ACTIONS.UPLOAD_FILE, uploadImageSaga),
  ])
}

export default uploadImagesSagas

而且效果很好。

问题是,saga 何时在上传 10 张图片时调用 10 次(浏览器冻结 :-))...

我想在第一个结束后运行第二个,在第二个结束后运行第三个......同步。

这是可能的,如何? saga core 中有什么功能可以解决这个问题吗?

【问题讨论】:

    标签: react-redux redux-saga saga


    【解决方案1】:

    是的,这正是actionChannel 效果的用途。您可以在此处的 saga 文档中了解此内容:https://redux-saga.js.org/docs/advanced/Channels.html

    在你的情况下:

    function * uploadImageSaga (action: Object): Saga {
      // no change to this saga from what you have
    }
    
    function * uploadImagesSagas (): Saga {
      const chan = yield actionChannel(ACTIONS.UPLOAD_FILE);
      while (true) {
        const action = yield take(chan);
        yield call(uploadImageSaga, action);
      }
    }
    
    export default uploadImagesSagas
    

    【讨论】:

      猜你喜欢
      • 2018-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多