Ինչպես է աշխատում setTimeout ֆունկցիան JavaScript-ում?
sobes.tech AI
Պատասխան AI-ից
setTimeout պլանավորում է ֆունկցիայի կամ կոդի կտորի կատարմանը նշված միլիսեկունդների ընթացքում:
Երբ կանչում եք setTimeout, բրաուզերը (կամ Node.js միջավայր) ստեղծում է ժամացույց։ setTimeout-ին փոխանցված ֆունկցիան տեղադրվում է callback հերթում (task queue) նշված ժամանականցից հետո:
JavaScript-ը միատող է։ Հիմնական հոսքը (main thread) կատարում է կոդը հերթականությամբ։ Երբ հիմնական հոսքը ավարտում է ընթացիկ առաջադրանքները, այն ստուգում է callback հերթը։ Եթե հերթում կան ֆունկցիաներ (օրինակ, որոնք հետաձգվել են setTimeout-ի միջոցով) և հիմնական հոսքը ազատ է, այն վերցնում է առաջին ֆունկցիան և executes է:
Սա նշանակում է, որ setTimeout(fn, 0) չի երաշխավորում ֆունկցիայի fn անմիջական կատարմանը։ Այն կիրականացվի հնարավորինս շուտ, բայց միայն ընթացիկ կոդի կատարման ավարտից հետո:
Սինտաքսիս:
setTimeout(function, milliseconds, param1, param2, ...);
function: Ֆունկցիան, որը պետք է կատարվի:milliseconds: Միլիսեկունդների քանակը, նախքան ֆունկցիայի կատարմանը։ Եթե բացակայում է, ապա՝ 0:param1, param2, ...: Անհրաժեշտության դեպքում փոխանցվող արգումենտներ, որոնք փոխանցվում են ֆունկցիային:
Օրինակ:
// Ցուցադրում է "Բարև!" 2 վայրկյան անց
setTimeout(function() {
console.log("Բարև!");
}, 2000);
// Արգումենտների փոխանցում
function ցույցտելՀաղորդագրություն(անուն) {
console.log("Բարև, " + անուն + "!");
}
setTimeout(showMessage, 1000, "Աշխարհ"); // Ցուցադրում է "Բարև, Աշխարհ!" 1 վայրկյան անց
setTimeout-ը վերադարձնում է թվային ID, որը կարելի է օգտագործել պլանավորված կատարման չեղարկման համար clearTimeout-ի միջոցով:
Օրինակ clearTimeout-ի օգտագործումը:
let timerId = setTimeout(function() {
console.log("Այս տողը չի ցուցադրվի");
}, 3000);
console.log("Ժամացույցը սկսված է...");
// Չեղարկում ենք ժամացույցը
clearTimeout(timerId);
console.log("Ժամացույցը չեղարկված է.");
Մեծ կարևորություն ունի՝
- Ժամկետը անհատուկ չի երաշխավորում ճշգրիտ ժամանակը, հատկապես բարձր բեռների դեպքում։ Նշված ժամանակը նվազագույն է, նախքան callback հերթում ֆունկցիայի տեղադրումը:
- Node.js-ում ժամացույցները կառավարում է իրադարձությունների ցիկլը (event loop), ինչպես բրաուզերում: