Sobes.tech
Junior

JavaScriptте setTimeout функциясы кандай иштейт?

sobes.tech AI

AIден жооп

setTimeout белгилөө функцияны же код бөлүгүн белгиленген миллисекунддар өткөндөн кийин ишке ашыруу үчүн пландаштырат.

setTimeout чакырылганда, браузер (же Node.js аткаруу чөйрөсү) таймер түзөт. setTimeoutке берилген функция колбэк кезегине (task queue) белгиленген убакыт өткөндөн кийин коюлат.

JavaScript биротоло иштейт. Негизги ағын (main thread) кодду биртектүү аткарат. Негизги ағын учурдагы тапшырмаларды аяктагандан кийин, колбэк кезегин текшерет. Эгер кезекте функциялар болсо (мисалы, setTimeout аркылуу кечиге тургандар) жана негизги ағын бош болсо, ал биринчи функцияны алып чыгып, ишке ашырат.

Бул setTimeout(fn, 0) функциянын дароо аткарылышын кепилдебейт. Ал мүмкүн болушунча эртерээк аткарылат, бирок учурдагы коддун аткарылышы аяктагандан кийин гана:

Синтаксис:

setTimeout(function, milliseconds, param1, param2, ...);
  • function: Ишке ашырылуучу функция.
  • milliseconds: Функциянын ишке ашышына чейин миллисекунддар саны. Эгер пропущено болсо, 0 деп саналат.
  • param1, param2, ...: Функция чакырылганда берилүүчү милдеттүү эмес аргументтер.

Мисал:

// "Салам!" деп 2 секунддан кийин чыгарат
setTimeout(function() {
  console.log("Салам!");
}, 2000);

// Аргументтерди берүү
функция көрсөтүүСуроо(аты) {
  console.log("Салам, " + аты + "!");
}

setTimeout(көрсөтүүСуроо, 1000, "Дүйнө"); // 1 секунддан кийин "Салам, Дүйнө!" чыгат

setTimeout кайтарат таймердин сандык ID-син, аны clearTimeout аркылуу пландаштырылган аткарууну жокко чыгара аласыз.

clearTimeout колдонуу мисалы:

айрым таймерId = setTimeout(function() {
  console.log("Бул сап чыкпайт");
}, 3000);

console.log("Таймер иштетилди...");

// Таймерди жокко чыгарыңыз
clearTimeout(таймерId);

console.log("Таймер жокко чыгарылды.");

Маанилүү учурлар:

  • Кечиктирүү тактык менен кепилденбейт, өзгөчө жогорку жүктөмдөрдө. Белгиленген убакыт минималдуу убакыт, андан кийин гана функция колбэк кезегине коюлат.
  • Node.js-та таймерлер иш-чаралар цикли (event loop) аркылуу башкарылат, ошондой эле браузерде: