0
私のサガの中で、私は非同期関数を呼び出してコールバックを渡しています。コールバックを渡す理由は、async関数から数回呼び出すことができるからです。Redux Saga - 非同期コールバック内で "yield put"を呼び出す
コールバック内でyield関数を呼び出すには、async関数の中から複数回呼び出す必要があります。
私のサガの中で、私は非同期関数を呼び出してコールバックを渡しています。コールバックを渡す理由は、async関数から数回呼び出すことができるからです。Redux Saga - 非同期コールバック内で "yield put"を呼び出す
コールバック内でyield関数を呼び出すには、async関数の中から複数回呼び出す必要があります。
気付いたように、yield
はジェネレータ関数のネストされた関数の中にありません。代わりに、コールバックスタイルの非同期関数を約束に変換し、call effectを使用することができます。
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が完了したときにわかりやすい部分があります。前回のコールバック関数を呼び出したことを通知するには、何らかの方法が必要です。