ජාවාස්ක්‍රිප්ට් හි අසම්භාව්‍ය කේතය ප්‍රොමිසිකරණය කිරීම

ප්‍රතිඥා ජාවාස්ක්‍රිප්ට් වල එතරම් මෑතකදී හඳුන්වා දුන් නිසා, සමහර අසම්භාව්‍ය ක්‍රියාකාරීත්වය ප්‍රතිඥා සහාය නොදක්වයි. මෙම අවස්ථාවේදී, එවැනි කේතයක් සඳහා ප්‍රතිඥාවක ස්වරූපයෙන් ආවරණයක් නිර්මාණය කිරීම ප්‍රයෝජනවත් වේ, මන්ද ප්‍රතිඥා භාවිතා කිරීම වඩාත් පහසුය. මෙවැනි පරිවර්තනය ප්‍රොමිසිකරණය ලෙස හැඳින්වේ.

ප්‍රතිඥා සහාය නොදක්වන ක්‍රියාකාරීත්වයක උදාහරණයක් ලෙස, පින්තූර ලබා ගැනීම දැක්විය හැකිය, එය අපි පෙර පාඩම්වලදී දැනටමත් සාකච්ඡා කර ඇත:

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

පින්තූරවල පථ අරාවේ ගබඩා කර ඇතැයි සිතමු:

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

සියලුම පින්තූර ලබා ගැනීම අවසන් වී ඇති බවට බලාපොරොත්තුවෙන් සිටින, ඉන්පසු ඒවා ලූපයක් තුළ ශරීරයේ අවසානයට එකතු කරන කේතය ලියන්න.

Задание 3

පහත කේතය ලබා දී ඇත:

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

එහි ප්‍රොමිසිකරණය සිදු කරන්න.