जावास्क्रिप्ट में एसिंक्रोनस कोड का प्रोमिसिफिकेशन

चूंकि प्रोमिसेज जावास्क्रिप्ट में ज्यादा समय पहले नहीं आए थे, तो कुछ एसिंक्रोनस फंक्शनलिटी प्रोमिसेज को सपोर्ट नहीं कर सकता है। इस मामले में ऐसे कोड के ऊपर एक आवरण बनाना उपयोगी होता है एक प्रोमिस के रूप में, क्योंकि प्रोमिसेज का उपयोग करना बहुत अधिक सुविधाजनक है। ऐसे परिवर्तन को कहा जाता है प्रोमिसिफिकेशन।

ऐसे फंक्शनलिटी का उदाहरण, जो सपोर्ट नहीं करता प्रोमिसेज, इमेज लोडिंग हो सकती है, जिसे हमने पिछले पाठों में पहले ही देख लिया है:

javascriptlet 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');
});

आइए इस कोड का प्रोमिसिफिकेशन करें, इसे एक ऐसे फंक्शन में लपेटकर जो एक प्रोमिस रिटर्न करता है:

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('image "' + path + '"  load error'));
    });
  });
}

हम अपने फंक्शन का उपयोग इस प्रकार कर सकेंगे :

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

स्वयं, मेरे कोड में देखे बिना, इमेज लोडिंग का प्रोमिसिफिकेशन करें। प्राप्त कोड का टेस्ट करें।

Задание 2

मान लीजिए कि इमेज के पथ Array में स्टोर हैं:

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

ऐसा कोड लिखें, जो सभी इमेज के लोड होने का इंतजार करे, और फिर उन्हें लूप में body के अंत में जोड़ दे।

Задание 3

निम्नलिखित कोड दिया गया है:

javascriptwindow.addEventListener('DOMContentLoaded', function() {
  console.log('dom loaded');
});

इसका प्रोमिसिफिकेशन करें।