首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用yield放入yield

如何使用yield放入yield
EN

Stack Overflow用户
提问于 2019-12-31 15:49:52
回答 2查看 351关注 0票数 0

我想要进行n次api调用,并且我正在做floows

代码语言:javascript
复制
   try {
    ....
     yield all(
          action.uploadDocsBody.map(u =>
            call(uploadDocs, {
              ...,

            }),
          ),
        );

     yield put({
      type: UPLOADDOCS_COMPLETED,
      payload: { statusText: 'Success' },
    });

 } catch (e) {

    yield put({
      type: UPLOADDOCS_FAILED,
      payload: {
        error: true,
      },
    });
  }

问题是UPLOADDOCS_COMPLETED只有在完成所有api调用后才会被调用。

我想在每次api调用后生成put,如何使用呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-31 16:43:50

您可以用另一个生成器包装每个调用,并生成它:

代码语言:javascript
复制
function *foo(u) {
 yield call(uploadDocs, {...});
 yield put({ type: UPLOADEDDOCS_COMPLETED, .....});
}

yield all(action.uploadDocsBody.map(u => foo(u)))
票数 1
EN

Stack Overflow用户

发布于 2019-12-31 16:59:10

代码语言:javascript
复制
function call(uploadDocs,{...},callback){
  /// do you task
    callback()
}   
function *foo(u) {
  var put  =  function({ type: UPLOADEDDOCS_COMPLETED, .....});   
 yield call(uploadDocs, {...} ,put);

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59541172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档