Выполнение функции `call` для функции` fork` приводит к зависанию return при возврате? - PullRequest
0 голосов
/ 19 мая 2018

Я выполняю 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 работает?Это работает для любого асинхронного материала, начатого ребенком, чтобы закончить?

...