在我的传奇中,我正在调用一个异步函数并向其传递回调。我向它传递回调的原因是因为它可以从异步函数调用几次。
如何从回调内部调用"收益看跌",应该从异步函数内部多次调用。
正如您所注意到的,无法在生成器函数的嵌套函数中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何时完成。它将需要某种方式来表示它最后一次调用了回调函数。