Sobes.tech
Junior

Ինչպես է աշխատում 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), ինչպես բրաուզերում: