از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
جاوا اسکریپت: روش Sleep/Wait/Delay Code Execution تاخیر در اجرای کد/شبیه سازی تاخیر کاربردهای مختلفی دارد – مکث در یک حلقه برای نمایش داده ها، انتظار برای پایان یافتن رشته های دیگر در یک محیط چند رشته ای (البته، این جایگزین برنامه نویسی ناهمزمان مناسب نمی شود. ) یا صرفاً کاهش بارها روی یک سرور یا مشتری، با درخواست های متوالی. توجه: تاخیر در اجرای کد…
سرفصلهای مطلب
معرفی
تأخیر در اجرای کد/شبیه سازی تاخیر کاربردهای مختلفی دارد – مکث در یک حلقه برای نمایش داده ها، انتظار برای پایان یافتن رشته های دیگر در یک محیط چند رشته ای (البته، این جایگزین برنامه نویسی ناهمزمان مناسب نمی شود) یا صرفاً کاهش بار. روی یک سرور یا مشتری، با درخواست های متوالی.
توجه داشته باشید: تاخیر در اجرای کد به عنوان عامیانه شناخته می شود “خوابیدن” یا کمتر به عنوان “در انتظار”.
در این راهنمای کوتاه، ما یاد خواهیم گرفت که چگونه در جاوا اسکریپت منتظر بمانیم – یا بهتر است بگوییم، چگونه با استفاده از
setTimeout()
تابع.
را setTimeout() تابع
در وانیلی جاوا اسکریپت – می توانیم از داخلی استفاده کنیم setTimeout()
تابع “خواب”/تاخیر اجرای کد:
setTimeout(function (){
// Code to run here
}, delay)
را setTimeout()
تابع دو پارامتر را می پذیرد: الف تابع (کدی که باید در زمان انقضای تاخیر اجرا شود)، و تاخیر انداختن (در میلی ثانیه). سپس یک مقدار صحیح مثبت منحصر به فرد به نام شناسه زمان بازگردانده می شود که زمان ایجاد شده را مشخص می کند.
می توانید یک تابع ناشناس را فراخوانی کنید یا آن را قبل از ارسال آن نام گذاری کنید:
function printMessage() {
console.log("I come from a named function!");
}
const timeout1 = setTimeout(() => {console.log("I come from an anonymous function!")}, 1000);
const timeout2 = setTimeout(printMessage, 2000);
console.log('Timeout IDs:', timeout1, timeout2)
این منجر به:
Timeout IDs:45
I come from an anonymous function!
I come from a named function!
توجه داشته باشید: setTimeout()
یک تابع ناهمزمان است – مهلت زمانی فعلی اجرای بلوک کد بعدی را متوقف نمی کند.
به طوری که اگر چند تایم اوت داشته باشیم، که در آن هر زمان یک تابع را فراخوانی می کند:
setTimeout(() => {console.log("... is 42")}, 4000);
setTimeout(() => {console.log("the universe, and everything")}, 3000);
setTimeout(() => {console.log("The meaning of life")}, 1000);
خروجی خواهد بود:
The meaning of life
the universe, and everything
... is 42
باز هم، تماس ها ناهمزمان هستند – آنها یکدیگر را مسدود نمی کنند. پیامها به ترتیب به عقب منتقل میشوند، زیرا زمان اول طولانیتر از دو تای دیگر و دومی طولانیتر از سوم است.
به خاطر فراخوانی روش sleep()
– می توانید یک wrapper ساده ایجاد کنید که فقط آرگومان ها را به آن تفویض می کند setTimeout()
تابع:
function sleep(functionToExecute, delay){
let timeoutId = setTimeout(functionToExecute(), delay);
return timeoutId;
}
که می توانید به جای آن استفاده کنید:
const sayHello = () => {
console.log('Hello, world!');
}
sleep(sayHello, 1000);
ما sleep()
تابع فقط قند نحوی است – در واقع چیزی اضافه نمی کند. از طرفی با زبان های دیگر که اکثراً دارای زبان اختصاصی هستند همخوانی بیشتری دارد sleep()
با آن نام عمل کنید
را clearTimeout() تابع
را clearTimeout()
تابع برای لغو مهلت زمانی استفاده می شود که قبلا با آن ایجاد شده بود setTimeout()
، با استفاده از شناسه بازگردانده شده توسط مهلت زمانی:
let myTimeoutId = setTimeout(() => {
// do something
})
با استفاده از برگشت داده شده myTimeoutId
، می توانیم وقفه زمانی اجرا را لغو کنیم:
clearTimeout(myTimeoutId);
نتیجه
در این راهنمای کوتاه، روش ایجاد تاخیر در جاوا اسکریپت، روش استفاده از آن را توضیح دادیم setTimeout()
عملکرد، و همچنین روش لغو اجرای کد برنامه ریزی شده.
منتشر شده در 1403-01-13 01:17:08