⊗jsSpACInr 155 of 294 menu

JavaScript-ում կոլբեքներով ասինխրոն կոդ

Ենթադրենք ունենք ինչ-որ ասինխրոն ֆունկցիա՝

function make() { setTimeout(function() { console.log('1'); }, 3000); }

Ենթադրենք այս ֆունկցիան օգտագործում ենք հետևյալ կերպ.

make(); console.log('2'); // կկատարվի առաջինը

Ենթադրենք ուզում ենք անել այնպես, որ երկրորդ տպումը կոնսոլում կատարվի այն բանից հետո, երբ կատարվում է ֆունկցիայի ներսում գտնվող ասինխրոն գործողությունը։ Դրա համար օգտագործվող մոտեցումներից մեկը կոլբեքների օգտագործումն է՝ սպասվող կոդը փաթաթում ենք անանուն ֆունկցիայի մեջ և փոխանցում որպես պարամետր make ֆունկցիային.

make(function() { console.log('2'); });

Իհարկե, սա ինքնին չի լուծի մեր խնդիրը։ Այժմ մենք պարզապես կնքեցինք հետևյալ համաձայնությունը. make-ի գործարկումից հետո կոդը կատարելու ցանկության դեպքում փոխանցեք այդ կոդը կոլբեքով make-ի կանչին։

Ուղղենք make ֆունկցիայի կոդն այնպես, որ այն սկսի աշխատել մեր համաձայնությանը համապատասխան.

function make(callback) { setTimeout(function() { console.log('1'); // ինչ-որ ասինխրոն գործողություն, կարող է մեկից ավելի լինել callback(); // ապա մեր կոլբեքը }, 3000); }

Պատմեք, թե ինչ հերթականությամբ կտպվեն թվերը կոնսոլում.

function make(callback) { setTimeout(function() { console.log('1'); callback(); }, 3000); } make(function() { console.log('2'); console.log('3'); });
mstrnlhisv