কম্পিউটার

জাভাস্ক্রিপ্ট সহ একটি নির্দিষ্ট সময়ের পরে কীভাবে একটি ফাংশন চালানো যায়

আপনি বিল্ট-ইন setTimeout() ব্যবহার করে যেকোন জাভাস্ক্রিপ্ট ফাংশন কার্যকর করতে বিলম্ব করতে পারেন পদ্ধতি।

ধরা যাক আপনি 3 সেকেন্ড পরে একটি সতর্কতা ডায়ালগ দেখাতে চান৷

প্রথমে আপনাকে 3 সেকেন্ডকে মিলিসেকেন্ডে (ms) রূপান্তর করতে হবে, যা 3000ms, এবং তারপর ফাংশন সেট আপ করতে হবে:

setTimeout(function() {
  alert("That’s 3 seconds!")
}, 3000)

উপরেরটি একটি বেনামী (নামহীন) ফাংশন, যা বাস্তব জীবনে খুব বেশি ব্যবহারিক নয়, কারণ এটি শুধুমাত্র একবার ব্যবহার করা যেতে পারে এবং এটি বর্ণনামূলক নয়৷

এখানে ঠিক একই কার্যকারিতা রয়েছে, তবে একটি নামকরণে, ফাংশন এক্সপ্রেশন:

const delayThreeSeconds = function() {
  alert("That’s 3 seconds!")
}

setTimeout(delayThreeSeconds, 3000)

এখন আপনি delayThreeSeconds উল্লেখ করে আপনার প্রজেক্টের যেকোনো জায়গায় আপনার বিলম্ব ফাংশন পুনরায় ব্যবহার করতে পারেন পরিবর্তনশীল।

সেটটাইমআউট বিলম্ব ইঙ্গিতপূর্ণ - সুনির্দিষ্ট নয়

বেশিরভাগ লোকেরা জানেন না যে আপনি সেটটাইমআউটে যে সময়টি নির্দিষ্ট করেছেন তা হল নূন্যতম ফাংশন-নির্বাহের বিলম্ব — এটি কার্যকর করতে সঠিক পরিমাণ নয়৷

সুতরাং আপনি যদি 3000ms (3 সেকেন্ড) নির্দিষ্ট করেন, তাহলে আপনার ফাংশনটি কার্যকর হওয়ার আগে এটি অনেক বেশি সময় নিতে পারে কারণ JavaScript সিঙ্ক্রোনাস, এটি একবারে একটি কাজ চালায়।

তাই যদি আপনার ওয়েবসাইটে অন্যান্য জাভাস্ক্রিপ্ট ফাংশন টাস্কের একটি গুচ্ছ থাকে যা আপনার setTimeout এর আগে চালানোর জন্য সেট করা থাকে ফাংশন, এই কাজগুলি প্রথমে সম্পূর্ণ করতে হবে, এবং এটি কয়েক মিলিসেকেন্ড থেকে কয়েক সেকেন্ড পর্যন্ত যে কোনও জায়গায় নিতে পারে৷

এমন কিছু যা একটি বিশাল বিলম্বের কারণ হতে পারে যদি আপনার একটি ফাংশন সম্পূর্ণ করার জন্য একটি বাহ্যিক উত্স থেকে একটি বিশাল স্ক্রিপ্ট লোড করার উপর নির্ভর করে। এই ধরনের ফাঁদে আপনি একজন শিক্ষানবিশ হিসেবে, এমনকি একজন অভিজ্ঞ ডেভেলপার হিসেবেও পড়তে পারেন।

এই সবই setTimeout করে আপনার যদি পিন-পয়েন্ট নির্ভুলতার প্রয়োজন হয় তবে কিছুটা অপ্রত্যাশিত, বা অন্তত অবিশ্বাস্য।

এই সমস্যাটি এড়ানোর একটি সহজ উপায় (বেশিরভাগ)

যদি আপনার প্রকল্পে একটি নির্দিষ্ট ফাংশন থাকে যেখানে সুনির্দিষ্ট টাইমিং গুরুত্বপূর্ণ, এটি অন্য কোনো ফাংশনের আগে চালানোর জন্য সেট করুন। এটি অন্ততপক্ষে নিশ্চিত করবে যে আপনার সবচেয়ে গুরুত্বপূর্ণ ফাংশন যত দ্রুত সম্ভব চলবে।

যাইহোক, এমনকি যদি আপনার সবচেয়ে গুরুত্বপূর্ণ ফাংশন অন্য কোনো কোডের আগে চালানোর জন্য সেট করা থাকে তাহলেও কিছু থাকতে পারে মৃত্যুদন্ড বিলম্ব।

উদাহরণস্বরূপ, যদি ব্যবহারকারীর ব্রাউজারে একগুচ্ছ অ্যাডঅন/এক্সটেনশন ইনস্টল করা থাকে। এই সফ্টওয়্যারটি জাভাস্ক্রিপ্টে চলে (অন্যান্য জিনিসগুলির মধ্যে) এবং এটি আপনার ওয়েবসাইটের কোড কার্যকর করতে কতটা বিলম্ব ঘটাবে বা তা অনুমান করা অসম্ভব৷

এই সমস্ত কারণেই পারফরম্যান্স একটি গুরুত্বপূর্ণ বিষয় যাতে ফোকাস করা যায়, এবং কেন সমস্ত ব্রাউজারে এবং একাধিক ডিভাইসে আপনার কোডের কার্যকারিতা পরীক্ষা করা সামঞ্জস্যপূর্ণ ব্যবহারকারীর অভিজ্ঞতা প্রদানের জন্য গুরুত্বপূর্ণ৷

জেনে রাখা ভালো: আপনি আজ যা শিখেছেন তা setInterval-এর ক্ষেত্রেও প্রযোজ্য পদ্ধতি, পার্থক্য হল এটি বারবার চলে, — setTimeout একবার চলে।


  1. জাভাস্ক্রিপ্টে একটি ফাংশন কনস্ট্রাক্টরের সাথে কীভাবে একটি ফাংশন আহ্বান করবেন?

  2. জাভাস্ক্রিপ্টের সাথে একটি সময় নির্দিষ্ট সময়সীমার মধ্যে আছে কিনা তা দেখতে মানচিত্রের ফাংশনটি কীভাবে ব্যবহার করবেন?

  3. দুটি অ্যাসিঙ্ক ফাংশন সম্পূর্ণ হওয়ার পরে কীভাবে একটি ফাংশন চালানো যায় - জাভাস্ক্রিপ্ট

  4. পাইথনে উচ্চ-নির্ভুলতার সাথে সময় কীভাবে পরিমাপ করবেন?