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

Redux Saga-在异步回调中调用“yield put”,redux,redux-saga,Redux,Redux Saga,在我的故事中,我调用了一个异步函数,并向它传递了一个回调。我向它传递回调的原因是,它可以从异步函数调用几次 如何从回调函数内部调用yield put,而回调函数应该从异步函数内部调用多次。正如您所注意到的,无法在生成器函数的嵌套函数内部进行yield。相反,您可以将回调样式的异步函数转换为承诺,并使用 这是一种常见的模式,但您需要知道异步函数何时完成。它需要某种方式来发出信号,表明它已经最后一次调用了回调函数 function* generator() { const results = y

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


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

正如您所注意到的,无法在生成器函数的嵌套函数内部进行yield。相反,您可以将回调样式的异步函数转换为承诺,并使用

这是一种常见的模式,但您需要知道异步函数何时完成。它需要某种方式来发出信号,表明它已经最后一次调用了回调函数

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));
}