⊗jsSpPrmSS 174 of 294 menu

Promises em estilo síncrono em JavaScript

Para resolver o problema do promise hell, foi criada uma sintaxe especial para promises, permitindo escrever código assíncrono de forma muito mais fácil - no estilo síncrono.

Vamos começar a estudá-la. Primeiro, pegaremos o código da lição anterior:

function func() { getSmth(2).then(res => { console.log(res); // exibirá 4 }); } func();

Se nossa função getSmth fosse síncrona, o código da função func poderia ser reescrito da seguinte forma:

function func() { let res = getSmth(2); console.log(res); // exibirá 4 }

A função getSmth, no entanto, é assíncrona, portanto, o código acima não funcionará. Mas, usando o estilo síncrono de promises, poderemos obter algo semelhante. Vamos fazer isso.

Primeiro, devemos declarar nossa função func como assíncrona usando o comando especial async:

async function func() { }

Após isso, poderemos usar o comando especial await dentro da função func. Este comando, escrito antes de uma promise, fará com que o JavaScript espere até que a promise seja cumprida. Depois disso, o comando retornará o resultado da promise, e a execução do código continuará.

No nosso caso, devemos escrever await antes da chamada de getSmth. Como o resultado da chamada dessa função será uma promise, a execução subsequente do código continuará apenas após o cumprimento dessa promise. E o resultado da promise pode ser armazenado em uma variável. Vamos fazer o descrito:

async function func() { let res = await getSmth(2); console.log(res); // exibirá 4 } func();

Vamos chamar getSmth várias vezes:

async function func() { let res1 = await getSmth(2); let res2 = await getSmth(3); console.log(res1 + res2); // exibirá 13 } func();

E agora vamos chamar getSmth em um loop:

async function func() { let arr = [1, 2, 3, 4, 5]; let sum = 0; for (let elem of arr) { sum += await getSmth(elem); } console.log(sum); } func();

Reescreva o seguinte código usando a sintaxe síncrona:

function func() { getSmth(2).then(res1 => { getSmth(3).then(res2 => { getSmth(4).then(res3 => { console.log(res1 + res2 + res3); }); }); }); } func();
Português
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nós usamos cookies para o funcionamento do site, análises e personalização. O processamento de dados é realizado de acordo com a Política de Privacidade.
aceitar todas configurar rejeitar