როგორ მუშაობს setTimeout ფუნქცია JavaScript-ში?
sobes.tech AI
პასუხი AI-სგან
setTimeout გეგმისახორციელებს ფუნქციის ან კოდის ფრაგმენტის შესრულებას მითითებულ მილიწამებში.
როდესაც იძახით setTimeout, ბრაუზერი (ან Node.js გარემო) ქმნის ტაიმერს. setTimeout-ში გადაცემული ფუნქცია მოთავსდება callback რიგში (task queue) მითითებული დროის გასვლის შემდეგ.
JavaScript ერთთრობითია. ძირითადი ნაკადი (main thread) ასრულებს კოდს თანმიმდევრობით. როდესაც ძირითადი ნაკადი ამთავრებს მიმდინარე დავალებებს, ის შემოწმებს callback რიგს. თუ რიგში ფუნქციებია (მაგალითად, setTimeout-ით გადადებული) და ძირითადი ნაკადი თავისუფალია, ის იღებს პირველ ფუნქციას და ასრულებს.
ეს ნიშნავს, რომ setTimeout(fn, 0) არ გარანტირებს fn-ის დაუყოვნებლივ შესრულებას. ის შესრულდება რაც შეიძლება მალე, მაგრამ მხოლოდ მიმდინარე კოდის დასრულების შემდეგ.
სინტაქსი:
setTimeout(function, milliseconds, param1, param2, ...);
function: ფუნქცია, რომელიც უნდა შესრულდეს.milliseconds: მილიწამების რაოდენობა, სანამ ფუნქცია შესრულდება. თუ გამოტოვებულია, defaults-ად 0-ია.param1, param2, ...: სავალდებულო არგუმენტები, რომლებიც გადაეცემა ფუნქციას მისი გამოძახებისას.
მაგალითი:
// გამოიტანს "გამარჯობა!" 2 წამში
setTimeout(function() {
console.log("გამარჯობა!");
}, 2000);
// არგუმენტების გადაცემა
ფუნქცია გამოაჩინოსშეტყობინება(სახელი) {
console.log("გამარჯობა, " + სახელი + "!");
}
setTimeout(showMessage, 1000, "მსოფლიო"); // გამოიტანს "გამარჯობა, მსოფლიო!" 1 წამში
setTimeout-ი აბრუნებს ნომერულ ID-ს, რომელიც გამოიყენება დაგეგმილი შესრულების გაუქმებისთვის clearTimeout-ის საშუალებით:
მაგალითი clearTimeout-ის გამოყენებით:
მოდით, timerId = setTimeout(function() {
console.log("ეს ხაზი არ გამოჩნდება");
}, 3000);
console.log("ტაიმერი დაწყებულია...");
// გაუქმება ტაიმერი
clearTimeout(timerId);
console.log("ტაიმერი გაუქმებულია.");
მნიშვნელოვანია:
- დათქმული დრო სწორად არ გარანტირებულია, განსაკუთრებით მაღალი დატვირთვის დროს. მითითებული დრო არის მინიმალური დაგვიანება, სანამ ფუნქცია კოლბეკის რიგში ჩაემატება.
- Node.js-ში ტაიმერები მართავს მოვლენათა ციკლი (event loop), როგორც ბრაუზერში: