⊗jsSpPrmPf 172 of 294 menu

Promisificação de código assíncrono em JavaScript

Como as promessas surgiram no JavaScript há pouco tempo, algumas funcionalidades assíncronas podem não suportar promessas. Nesse caso, é útil criar um wrapper em torno desse código na forma de uma promessa, pois usar promessas é muito mais conveniente. Essa transformação é chamada de promisificação.

Um exemplo de funcionalidade que não suporta promessas pode ser o carregamento de imagens, que já analisamos em lições anteriores:

let image = document.createElement('img'); image.src = 'img.png'; image.addEventListener('load', function() { document.body.appendChild(image); }); image.addEventListener('error', function() { console.log('image load error'); });

Vamos realizar a promisificação deste código, encapsulando-o em uma função que retorna uma promessa:

function loadImage(path) { return new Promise(function(resolve, reject) { let image = document.createElement('img'); image.src = path; image.addEventListener('load', function() { resolve(image); }); image.addEventListener('error', function() { reject(new Error('image "' + path + '" load error')); }); }); }

Poderemos usar nossa função da seguinte maneira:

loadImage('img.png').then(function(image) { document.body.appendChild(image); }).catch(function(error) { console.log(error); });

Por conta própria, sem espiar o meu código, realize a promisificação do carregamento de imagens. Teste o código obtido.

Suponha que os caminhos das imagens estejam armazenados em um array:

let paths = ['img1.png', 'img2.png', 'img3.png'];

Escreva um código que aguardará o término do carregamento de todas as imagens e, em seguida, as adicionará em um loop ao final do body.

Dado o seguinte código:

window.addEventListener('DOMContentLoaded', function() { console.log('dom carregado'); });

Realize sua promisificação.

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