Sleep()
Sleep() ব্যবহার করে আমরা একটি ফাংশনকে নির্দিষ্ট সময়ের জন্য এক্সিকিউশন থামিয়ে রাখতে পারি। C এবং PHP-তে আমরা sleep(sec) কল করি। জাভাতে Thread.sleep(), পাইথনে time.sleep() এবং GO-তে time.Sleep(2 * time.Second) থাকে।
জাভাস্ক্রিপ্ট-এ এই ধরনের স্লিপ ফাংশন নেই। কিন্তু আমরা প্রমিস (promises) এবং async/await ফাংশন (ES 2018) এর অ보며 থাকব। কারণ এই ফিচারগুলো sleep() ব্যবহার করা খুব সহজ করে দিয়েছে। সংক্ষেপে আলোচনা করা হলো।
সিনট্যাক্স-১
sleep(Time in ms).then(() => { // code })
স্লিপ ফাংশন then কলব্যাক দিয়ে উপরের মত ব্যবহার করা যায়।
সিনট্যাক্স-২
const work = async () => { await sleep(Time in ms) // code } work()
স্লিপ ফাংশন async/await দিয়ে উপরের মত ব্যবহার করা যায়।
উদাহরণ
নিচের উদাহরণে, sleep() async/await ফাংশন দিয়ে ব্যবহার করা হয়েছে। এখানে স্লিপ ফাংশন await-এর সাথে থাকে যাতে প্রসেসিং চালু থাকে। শুরুতে async ফাংশন-এর টেক্সট "Hello Tutorix" দেখানো হয় ফাংশন শুরু হলে। পরে ফাংশনটি sleep ফাংশন দিয়ে ৩ সেকেন্ডের জন্য থামিয়ে রাখা হয়েছে। সময়কাল শেষ হলে sleep ফাংশন-এর পরের টেক্সট ("Welcome to ........") দেখানো হয়। এটি লুপ টার্মিনেট না হওয়া পর্যন্ত রিপিট হবে, মানে মোট ১৯ বার টেক্সট রিপিট হবে আউটপুটে দেখানো মতে।
<html> <body> <script>
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function Tutor() {
document.write('Hello Tutorix');
for (let i = 1; i < 20; i++) {
await sleep(3000);
document.write(i + " " + "Welcome to tutorix" + " " + "<br>");
}
}
Tutor()
</script> </body> </html>
আউটপুট
Hello Tutorix // after 3 secs 1 Welcome to tutorix // after 3sec...and the text will repeat until the loop terminates for every 3 sec 2 Welcome to tutorix 3 Welcome to tutorix ... 19 Welcome to tutorix