⊗jsSpPrmPf 172 of 294 menu

Промисификација асинхроног кода у JavaScript-у

Пошто су промови у JavaScript-у релативно нова појава, неки асинхрони функционалитет можда не подржава промове. У том случају корисно је створити омотач око таквог кода у облику промиса, јер је коришћење промиса много удобније. Таква трансформација се назива промисификација.

Пример функционалитета који не подржава промове може бити учитавање слика, које смо већ разматрали у претходним лекцијама:

let image = document.createElement('img'); image.src = 'img.png'; image.addEventListener('load', function() { document.body.appendChild(image); }); image.addEventListener('error', function() { console.log('Грешка при учитавању слике'); });

Извршимо промисификацију овог кода, обмотавши га функцијом која враћа промис:

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('Грешка при учитавању слике "' + path + '"')); }); }); }

Моћи ћемо да користимо нашу функцију на следећи начин:

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

Самостално, без подсматривања у мој код, извршите промисификацију учитавања слика. Тестирајте добијени код.

Нека путање до слика буду сачуване у низу:

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

Напишите код који ће сачекати да се учитају све слике, а затим их у петљи дода на крај body-ја.

Дат је следећи код:

window.addEventListener('DOMContentLoaded', function() { console.log('DOM је учитан'); });

Извршите његову промисификацију.

Српски
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј