JavaScript-ում նկարների ասինխրոն բեռնում

JavaScript-ի միջոցով դինամիկ կերպով ստեղծված նկարները նույնպես բեռնվում են ասինխրոն: Որպես օրինակ դիտարկենք հետևյալ կոդը:

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

Ինչպես տեսնում եք, այստեղ մենք ստեղծում ենք img թեգը, գրում ենք դրա src-ում նկարի ուղին և տեղադրում ենք այս նկարը body-ում: Սակայն նկարը էջում անմիջապես չի հայտնվի: Բանն այն է, որ երբ մենք գրեցինք src-ում նկարի ուղին՝ բրաուզերը սկսում է ներբեռնել այդ նկարը կայքից: Երբ նկարը լրիվ ներբեռնվի, միայն այդ ժամանակ բրաուզերը կկարողանա այն ցուցադրել:

Եթե նկարը բավականաչափ մեծ է, իսկ ինտերնետի արագությունը՝ բավականաչափ ցածր, ապա կայքի օգտատերը որոշ ժամանակ կկարողանա «հիանալ» դատարկ նկարով՝ մինչև այն բեռնվի:

Իրականում img թեգն ունի load իրադարձությունը, որն աշխատում է նկարի բեռնումն ավարտվելու պահին:

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

image.addEventListener('load', function() {
  // կաշխատի նկարի բեռնվելուց հետո
});

Մենք կարող ենք օգտագործել սա, որպեսզի նկարը տեղադրենք էջում միայն այն ժամանակ, երբ այդ նկարը բեռնված կլինի:

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

image.addEventListener('load', function() {
  document.body.appendChild(image); // տեղադրում ենք բեռնվելուց հետո
});

Նկարը պարտադիր չէ, որ կբեռնվի. կարող է պատահել, որ նկարի ուղին սխալ է, կամ ինտերնետի կապը կկտրվի, կայքի սերվերի խափանում կլինի կամ նման մի բան: Այլ կերպ ասած՝ բացառիկ իրավիճակ: Այս դեպքում կաշխատի ոչ թե load իրադարձությունը, այլ error իրադարձությունը:

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

image.addEventListener('load', function() {
  document.body.appendChild(image);
});
image.addEventListener('error', function() {
  // նկարի բեռնման սխալ
});
Задание 1

Ստեղծեք կոճակ, որի սեղմման դեպքում կբեռնվի նկար: Ցուցադրեք նկարը, երբ այն բեռնվի: Խնդրի դեպքում արտածեք հաղորդագրություն նկարի բեռնման հետ կապված: