Я только что узнал о функциях урожайности и генератора, и я не совсем уверен, что понимаю все.
Допустим, у меня есть функция 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});
}
Из того, что я понял, разница в том, что с помощью await все строки будут выполняться, поэтому formatMyJson будет вызываться независимо от того, что, в то время как с yield, redux-saga может сказать: «Мы не будем дальше в этомзапрос, потому что мы получили более свежее действие этого времени "и остановились после 1 доходности или 2.
Это правильно? Есть ли другие отличия?