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



在我的传奇中,我正在调用一个异步函数并向其传递回调。我向它传递回调的原因是因为它可以从异步函数调用几次。

如何从回调内部调用"收益看跌",应该从异步函数内部多次调用。

正如您所注意到的,无法在生成器函数的嵌套函数中yield。相反,您可以将回调样式异步函数转换为 promise,并使用调用效果。

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何时完成。它将需要某种方式来表示它最后一次调用了回调函数。

最新更新