user = yield fetch(`https://api.github.com/users/${action.name}`);
user = yield user.json();
yield put({ type: 'FETCH_USER_SUCCESS', user, id: action.id });
} catch (error) {
yield put({ type: 'FETCH_USER_ERROR', error, id: action.id });
}
}
function* initSagas() {
yield takeLatest('FETCH_USER', saga);
}
async function fetchUser({ name, id }) {
try {
let user = await fetch(`https://api.github.com/users/${name}`);
user = await user.json();
store.dispatch({ type: 'FETCH_USER_SUCCESS', user, id });
} catch (error) {
store.dispatch({ type: 'FETCH_USER_ERROR', error, id });
}
}
в чем разница?
1) в том, что на сагу тесты пишутся одной рукой а с async fetchUser я с удовольствием посмотрел бы на твои тесты 2) что ты будешь делать, если с задержкой 50 мс произойдёт два вызова твоей async fetchUser? на сагах я возьму takeLatest и буду пить маргариту на пляже
1. Саги говно 2. Ты мне это хочешь сказать? Вместо санков юзать такие функции?
user = yield user.json(); вот тут неправильно саги, они не так просты, как кажется
let user = yield fetch(`https://api.github.com/users/${action.name}`); тут тоже херня написана
Обсуждают сегодня