我刚刚了解了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个收益率后停止。
那是正确的吗?还有其他区别吗?