如果我产生一个等待异步函数调用的函数,是否与在那些异步调用上调用yield call()一样?

时间:2019-10-16 16:54:19

标签: javascript redux generator redux-saga yield

我刚刚了解了yield和generator函数,但我不确定一定要了解所有内容。

假设我有一个函数fetchAndGetJson

async function fetchAndGetJson() {
   const res = await fetch('site.com')
   let json = await res.json()
   formatMyJson(json);
   return json;
}

我从生成器函数中调用此函数

function* gengen() {
    const json = yield fetchAndGetJson()
    yield put({type: "NICE_JSON", data: json.data});
}

Redux-saga会在引发特定操作时调用该函数。

这和我的函数gengen一样吗?

function* gengen() {
    const res= yield call(fetch, 'site.com')
    let json = yield call ([res, 'json'])
    formatMyJson(json)
    yield put({type: "NICE_JSON", data: json.data});
}

据我所知,区别在于等待时将执行所有行,因此无论如何都将调用formatMyJson,而对于yield,redux-saga可以说“我们不会进一步处理此请求,因为我们这次收到的是最新操作”,并在1个收益率或2个收益率后停止。

那是正确的吗?还有其他区别吗?

0 个答案:

没有答案