Pentru că în ultimii ani nu prea am lucrat decât marginal cu JS, nu am fost chiar la curent cu ultimele noutăți (vorba vine, că-s în limbaj de ani buni). Știam de existența lor, foloseam ce înțelegeam (sau credeam că înțeleg) dar cam atât. Iar perechea async
/await
este exemplul perfect ce l-am înțeles cât se poate de… greșit.
Ce am înțeles bine: cum definești o funcție:
async function foo() {}
Asta înseamnă că de fiecare dată când apelezi funcția asta o să-ți întoarcă un Promise că îți dă rezultatul cândva. I.e. poți face foo().then(... )
.
Ce am înțeles mai puțin… bine: cum funcționează await
: nu știu cum, nu știu de ce, aveam impresia că tot ce urmează după operația asyncronă are nevoie de un await
în față. Prin urmare, ajungeam să fac ceva de genul:
const foo = await fetch();
const bar = await document.classList.add('...')
const foobar = await foo.results
// etc
Evident că e greșit: ai nevoie de await
doar la operațiunile … asincrone.
Sigur, era cât se poate de suficient să citesc în manual, dar hei…
Bonus: PHP Storm face highlight la toate await
dintr-o metodă atunci când faci click pe async
.