Я выполняю call
для такой функции:
const didRefresh = yield call(maybeRefresh);
console.log('call - maybeRefresh, didRefresh:', didRefresh); // i expect this to return before the fetch in refreshTask completes
И maybeRefresh
это:
function* maybeRefresh() {
const shouldRefresh = true;
if (shouldRefresh) {
yield fork(refreshTask);
console.log('did fork refresh task, should now return while refreshTask happens async');
}
const didRefresh = shouldRefresh;
return didRefresh;
}
function* refreshTask() {
console.log('will fetch');
const res = yield call(fetch, 'http://www.blah.com');
console.log('ok refresh done, status:', res.status); // however its not return until here
}
Когда я форк refreshTask
, я ожидаюyield call
вверху для возврата значения ДО того, как произойдет выборка.Однако, несмотря на то, что «вилка» вошла в систему, кажется, что она зависает, хотя она готова вернуться.Он зависает при возврате до завершения разветвленной задачи refreshTask
, затем возвращается.Это как yield call
работает?Это работает для любого асинхронного материала, начатого ребенком, чтобы закончить?