I am doing call
on a function like this:
const didRefresh = yield call(maybeRefresh);
console.log('call - maybeRefresh, didRefresh:', didRefresh); // i expect this to return before the fetch in refreshTask completes
And maybeRefresh
is this:
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
}
When I fork the refreshTask
, I expect the yield call
at top to return a value BEFORE the fetch happens. However even though "did fork" gets logged, it seems it hangs even though its ready to return. It hangs on return until the forked task refreshTask
completes, then it returns. Is this how yield call
works? It works for any async stuff started by the child to finish?