Промисификатсияи рамзи асинхронии дар JavaScript

Чунки ваъдаҳо (promises) ба JavaScript зуд ворид нашудаанд, баъзе функсионалҳои асинхронӣ метавонанд ваъдаҳоро дастгирӣ накунанд. Дар ин ҳолат муфид аст, ки болои чунин рамзе пӯшише ба сурати ваъда (promise) созед, зеро истифода бурдани ваъдаҳо хеле роҳаттар аст. Ин табдилдиҳӣ промисификатсия номида мешавад.

Мисоли функсионале, ки ваъдаҳоро дастгирӣ намекунад, метавонад боркунии аксҳо бошад, ки мо аллакай дар дарсҳои қаблӣ таҳлил карда будем:

javascriptlet image = document.createElement('img');
image.src = 'img.png';

image.addEventListener('load', function() {
  document.body.appendChild(image);
});
image.addEventListener('error', function() {
  console.log('хатои боркунии акс');
});

Биёед промисификатсияи ин рамзро иҷро кунем, онро дар функсияе печонем, ки ваъда (promise) бармегардонад:

javascriptfunction 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 + '"'));
    });
  });
}

Мо метавонем аз функсияи худ ба тариқи зерин истифода барем:

javascriptloadImage('img.png').then(function(image) {
  document.body.appendChild(image);
}).catch(function(error) {
  console.log(error);
});
Задание 1

Мустақилона, ба рамзи ман наменигаред, промисификатсияи боркунии аксҳоро иҷро кунед. Рамзи ба даст омадаро санҷед.

Задание 2

Бигзор роҳҳо ба аксҳо дар массив нигоҳ дошта шаванд:

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

Рамзе нависед, ки интизор шудани поёни боркурии ҳамаи аксҳоро интизор мешавад, сипас онҳоро дар давр (loop) ба охири body илова мекунад.

Задание 3

Рамзи зерин дода шудааст:

javascriptwindow.addEventListener('DOMContentLoaded', function() {
  console.log('dom бор карда шуд');
});

Промисификатсияи онро иҷро кунед.