首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Redux Saga -在异步回调中调用"yield“

Redux Saga -在异步回调中调用"yield“
EN

Stack Overflow用户
提问于 2017-01-29 03:11:25
回答 1查看 1.2K关注 0票数 0

在我的传奇故事中,我正在调用一个异步函数并将其传递给一个回调函数。我之所以给它传递一个回调,是因为它可以从异步函数中被调用几次。

我如何从回调内部调用"yield put“,而这个回调应该从异步函数内部调用多次。

EN

回答 1

Stack Overflow用户

发布于 2017-02-16 13:27:07

正如您已经注意到的,没有办法在生成器函数的嵌套函数中执行yield。相反,您可以将回调样式的异步函数转换为promise,并使用call effect

代码语言:javascript
运行
复制
function* generator() {
  const results = yield call(function() {
    return new Promise(function(resolve, reject) {
      const results = [];
      asyncFunction(function(result) {
        if (async function is done) { resolve(results) }
        else { results.push(result) }
      });
    });
  });
  yield put(action(results));
}

这是一个常见的模式,但对您来说最棘手的部分是知道asyncFunction何时完成。它需要一些方法来通知它已经最后一次调用了回调函数。

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

https://stackoverflow.com/questions/41913747

复制
相关文章

相似问题

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