async/await
umožňuje psát asynchronní JavaScript, který vypadá synchronně. Pomáhá bojovat s „peklem zpětného volání“. Jaké příkazy ale ve skutečnosti můžeme použít v kombinaci s await
?
Šime Vidas a Axel Rauschmayer měli nedávno opravdu zajímavou konverzaci na Twitteru. Pojďme se tedy podívat na některé úryvky.
(async () => { console.log(await 'foo'); })(); // 'foo'
(async () => { console.log(await 5); })(); // 5
Ukazuje se, že opravdu můžete await
cokoliv. To jsem nevěděl. Toto je jeden z těchto malých detailů JS, které opravdu rád objevuji. Pokud await
něco, co není příslib, vrátí skutečnou hodnotu.
let thenable = {
then: (fn) => {
fn('jup')
}
};
(async () => { console.log(await thenable); })() // 'jup'
A... nemusí to být slib. Potomable (cokoli, co obsahuje funkci s názvem then
) funguje také dobře. Takže díky Šime a Axelovi za tyto konverzace na veřejnosti.