在我的传奇故事中,我正在调用一个异步函数并将其传递给一个回调函数。我之所以给它传递一个回调,是因为它可以从异步函数中被调用几次。
我如何从回调内部调用"yield put“,而这个回调应该从异步函数内部调用多次。
发布于 2017-02-16 13:27:07
正如您已经注意到的,没有办法在生成器函数的嵌套函数中执行yield。相反,您可以将回调样式的异步函数转换为promise,并使用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何时完成。它需要一些方法来通知它已经最后一次调用了回调函数。
https://stackoverflow.com/questions/41913747
复制相似问题