Redux Saga async/await modèle

Je suis en utilisant async/await tout au long de ma base de code. De ce fait mes appels de l'api sont définies par async fonctions

async function apiFetchFoo {
  return await apiCall(...);
}

Je voudrais appeler cette fonction à partir de ma saga code. Il me semble que je ne peut pas faire cela:

//Doesn't work
function* fetchFoo(action) {
  const results = await apiFetchFoo();
  yield put({type: "FOOS_FETCHED_SUCCESSFULLY", foos: results});
}

Toutefois, cela fonctionne, et correspond à la redux saga de la documentation:

//Does work
function* fetchFoo(action) {
  const results = yield call(apiFetchFoo);
  yield put({type: "FOOS_FETCHED_SUCCESSFULLY", foos: results});
}

Est-ce la bonne façon d'utiliser les Redux Saga côtés async/await? Il est standard pour utiliser ce générateur de la syntaxe à l'intérieur de la saga de code, et la async/await modèle d'ailleurs?

  • Curieux, dans async/await motif pourquoi êtes-vous à l'aide de function *() { ... await } au lieu de async function () { .. await ...}? Je suis assez sûr que si vous utilisez attendent sans async elle conduit à une erreur "en attente est réservé javascript mot-clé".
InformationsquelleAutor mattnedrich | 2017-04-17