ஒரு டிஜிட்டல் கடிகாரம் ஏன் ஜாவாஸ்கிரிப்ட்டின் setInterval() செயல்பாட்டைப் பயன்படுத்த முடியாது

ஒரு டிஜிட்டல் கடிகாரம் ஏன் ஜாவாஸ்கிரிப்ட்டின் setInterval() செயல்பாட்டைப் பயன்படுத்த முடியாது
ஒரு டிஜிட்டல் கடிகாரம் ஏன் ஜாவாஸ்கிரிப்ட்டின் setInterval() செயல்பாட்டைப் பயன்படுத்த முடியாது

டிஜிட்டல் கடிகாரங்களில் ஜாவாஸ்கிரிப்ட் டைமர்களில் உள்ள சிக்கல்களைப் புரிந்துகொள்வது

ஜாவாஸ்கிரிப்டைப் பயன்படுத்தி டிஜிட்டல் கடிகாரத்தை உருவாக்குவது ஒரு அற்புதமான தொடக்கத் திட்டமாக இருக்கலாம், ஆனால் டைமர் செயல்பாடுகள் எதிர்பார்த்தபடி செயல்படாதபோது அடிக்கடி சிக்கல்கள் எழுகின்றன. ஒரு பொதுவான சவால் என்பதை உறுதி செய்வதாகும் இடைவெளி () ஒவ்வொரு நொடியும் கடிகாரத்தைப் புதுப்பிக்க செயல்பாடு சீராக இயங்குகிறது.

உங்கள் டிஜிட்டல் கடிகாரம் சரியாக வேலை செய்யவில்லை என்றால், அது சிறிய பிழை அல்லது ஜாவாஸ்கிரிப்ட்டின் தவறான புரிதலின் காரணமாக இருக்கலாம். இடைவெளி () முறை தொடர்பு கொள்கிறது தேதி பொருள் மற்றும் உங்கள் குறியீடு. எழுத்துப்பிழை மாறிகள் அல்லது தவறான தர்க்கம் போன்ற சிறிய தவறுகள் கடிகாரத்தைப் புதுப்பிப்பதை நிறுத்தலாம்.

நீங்கள் வழங்கிய எடுத்துக்காட்டில், தற்போதைய நேரத்தைப் பெற்று திரையில் காண்பிக்க JavaScript ஐப் பயன்படுத்துகிறீர்கள். இருப்பினும், அதைத் தடுப்பதில் சிக்கல் இருப்பதாகத் தெரிகிறது இடைவெளி () எதிர்பார்த்தபடி செயல்படுவதில் இருந்து, அதை நாங்கள் பேசுவோம்.

குறியீட்டை கவனமாக மதிப்பாய்வு செய்வதன் மூலமும், சாத்தியமான பிழைகளைக் கண்டறிவதன் மூலமும், கடிகாரத்தின் நடத்தையை உங்களால் சரிசெய்ய முடியும். இந்தக் கட்டுரையில், உங்கள் டிஜிட்டல் கடிகாரப் புதுப்பிப்புகளைச் சரியாகச் செய்ய, பொதுவான தவறைச் சரிசெய்வோம்.

கட்டளை பயன்பாட்டின் உதாரணம்
setInterval() குறிப்பிட்ட கால இடைவெளியில் குறிப்பிட்ட செயல்பாட்டை மீண்டும் மீண்டும் இயக்க இந்த செயல்பாடு பயன்படுத்தப்படுகிறது. டிஜிட்டல் கடிகாரத்தில், ஒவ்வொரு நொடியும் கடிகாரக் காட்சியைப் புதுப்பிக்கப் பயன்படுகிறது. எடுத்துக்காட்டு: setInterval(updateClock, 1000);
getHours() இந்த முறை ஒரு தேதி பொருளிலிருந்து மணிநேரத்தை மீட்டெடுக்கிறது, மணிநேரத்தை 24-மணிநேர வடிவமைப்பில் வழங்குகிறது. AM/PM ஆகிய இரண்டு கணினிகளிலும் நேரத்தை சரியாக வடிவமைக்க இது அவசியம். எடுத்துக்காட்டு: currentTime.getHours();
getMinutes() ஒரு தேதி பொருளில் இருந்து நேரத்தின் ஒரு பகுதியை நிமிடங்களைப் பெறுகிறது. இது முழு நேரத்தையும் காட்ட getHours() மற்றும் getSeconds() உடன் இணைந்து பயன்படுத்தப்படுகிறது. எடுத்துக்காட்டு: currentTime.getMinutes();
getSeconds() நிகழ்நேர கடிகார புதுப்பிப்புகளுக்கு முக்கியமான தேதி பொருளிலிருந்து வினாடிகளை மீட்டெடுக்கிறது. நேரக் காட்சி எப்போதும் இரண்டாவது வரை துல்லியமாக இருப்பதை இது உறுதி செய்கிறது. எடுத்துக்காட்டு: currentTime.getSeconds();
isNaN() இந்தச் செயல்பாடு ஒரு மதிப்பு NaN (ஒரு எண் அல்ல) என்பதைச் சரிபார்க்கிறது. தேதி பொருள் தவறான தரவை வழங்கும் போது சாத்தியமான பிழைகளைக் கையாள இது இரண்டாவது தீர்வில் பயன்படுத்தப்படுகிறது. எடுத்துக்காட்டு: isNaN(currentTime.getTime())
throw new Error() தவறான தரவு கண்டறியப்பட்டால் தனிப்பயன் பிழையை உருவாக்க பயன்படுகிறது. இந்த சூழலில், நேரத்தை மீட்டெடுக்கும்போது சாத்தியமான தோல்விகளைக் கையாளுகிறது. எடுத்துக்காட்டு: புதிய பிழை ("தவறான தேதி பொருள்");
console.assert() சில நிபந்தனைகள் உண்மையா என்பதைச் சரிபார்க்க சோதனையில் பயன்படுத்தப்படுகிறது. மூன்றாவது தீர்வில், கடிகாரம் எதிர்பார்த்த நேர மதிப்புகளைத் தருகிறதா என்பதைச் சரிபார்க்கிறது. எடுத்துக்காட்டு: console.assert(மணிநேரம் === 13, "சோதனை தோல்வியடைந்தது");
textContent இந்த பண்பு ஒரு தனிமத்தின் உரை உள்ளடக்கத்தை அமைக்கிறது அல்லது வழங்குகிறது, இது டிஜிட்டல் கடிகாரத்தில் கடிகாரத்தின் காட்சியில் நேரத்தை புதுப்பிக்க பயன்படுகிறது. எடுத்துக்காட்டு: document.getElementById('clock').textContent = clockTime;
% 12 || 12 இந்த வெளிப்பாடு 24-மணிநேர நேரத்தை 12-மணி நேரமாக மாற்றுகிறது. மணிநேரம் 12ஐக் கடந்ததா என்பதைத் தீர்மானிக்க இது மாடுலோவைப் பயன்படுத்துகிறது மற்றும் அதற்கேற்ப சரிசெய்கிறது. எடுத்துக்காட்டு: மணிநேரம் = மணிநேரம்% 12 || 12;

ஜாவாஸ்கிரிப்ட் டிஜிட்டல் கடிகாரத்தில் நேரத்தை எவ்வாறு கட்டுப்படுத்துகிறது

டிஜிட்டல் கடிகாரத்திற்கு வழங்கப்பட்ட ஸ்கிரிப்ட் சார்ந்துள்ளது இடைவெளியை அமைக்கவும் செயல்பாடு, குறிப்பிட்ட நேர இடைவெளியில் கொடுக்கப்பட்ட செயல்பாட்டை மீண்டும் மீண்டும் இயக்க பயன்படுகிறது. இந்த வழக்கில், காட்டப்படும் நேரத்தை புதுப்பிக்க ஒவ்வொரு 1000 மில்லி விநாடிகளுக்கும் (1 வினாடி) செயல்பாடு இயங்கும். இந்தக் குறியீட்டின் நோக்கம் பயனரின் சாதனத்திலிருந்து தற்போதைய நேரத்தைப் படம்பிடித்து அதை 12-மணிநேர AM/PM கடிகாரத்தில் வடிவமைப்பதாகும். ஜாவாஸ்கிரிப்டில் உள்ள தேதி பொருள் இங்கே முக்கியமானது, ஏனெனில் இது தற்போதைய மணிநேரம், நிமிடம் மற்றும் வினாடியை மீட்டெடுக்க உங்களை அனுமதிக்கிறது, அவை பின்னர் வடிவமைக்கப்பட்டு காட்டப்படும்.

setInterval மூலம் செயல்படுத்தப்படும் செயல்பாட்டிற்குள், தற்போதைய நேரத்தைப் பயன்படுத்தி பெறப்படும் புதிய தேதி(), இது கணினியின் உள்ளூர் நேரத்திற்கு அணுகலை வழங்குகிறது. இருப்பினும், இயல்புநிலை வடிவம் லோகேல் டைம்ஸ்ட்ரிங்() பயனர் இருப்பிடத்தின் அடிப்படையில் மாறுபடலாம், எனவே ஸ்கிரிப்ட் அதற்கு பதிலாக getHours(), getMinutes(), and getSeconds() ஆகியவற்றைப் பயன்படுத்தி மணிநேரம், நிமிடங்கள் மற்றும் வினாடிகளை நேரடியாக அணுகுகிறது. இந்த முறையைப் பயன்படுத்துவதன் மூலம், நேரத்தை 24-மணிநேரத்திலிருந்து 12-மணிநேர வடிவமைப்பிற்கு மாற்றுவது மற்றும் தேவைப்படும்போது நிமிடங்களுக்கும் வினாடிகளுக்கும் முன்னணி பூஜ்ஜியங்களைச் சேர்ப்பது போன்ற தனிப்பயன் வடிவமைப்பை அனுமதிக்கிறது, நேரம் எவ்வாறு காட்டப்படுகிறது என்பதில் ஸ்கிரிப்ட் மிகவும் துல்லியமான கட்டுப்பாட்டைக் கொண்டுள்ளது.

ஸ்கிரிப்ட்டின் ஒரு முக்கிய பகுதி, மணிநேரத்தை 24 மணி நேர கடிகாரத்திலிருந்து 12 மணி நேர கடிகாரமாக மாற்றுவதாகும். இது மாடுலோ ஆபரேட்டரைப் பயன்படுத்தி செய்யப்படுகிறது. 12க்கு அதிகமான அல்லது அதற்கு சமமான மணிநேரங்கள் "PM" ஐக் காண்பிக்கும், அதே நேரத்தில் 1 மற்றும் 11 க்கு இடைப்பட்ட மணிநேரங்கள் "AM" எனக் குறிக்கப்படும். மணிநேரம் 13 ஐ விட அதிகமாகவோ அல்லது அதற்கு சமமாகவோ இருந்தால், மணிநேரத்தை 12 மணிநேர வடிவத்தில் சரியாகக் காட்ட ஸ்கிரிப்ட் 12 ஐக் கழிக்கிறது. கடிகாரம் சரியாகப் படிக்கிறதா என்பதை உறுதிசெய்ய, 10 நிமிடங்களுக்கும் குறைவான நிமிடங்களுக்கும் வினாடிகளுக்கும் வடிவமைப்பைக் கையாள ஒரு நிபந்தனைச் சரிபார்ப்பைச் சேர்ப்பது முக்கியம் (எ.கா., 9:6 க்கு பதிலாக 9:06).

இறுதியாக, ஸ்கிரிப்ட் பயன்படுத்துகிறது உள் HTML HTML ஆவணத்தில் கடிகார காட்சியைப் புதுப்பிக்கும் பண்பு. ஒவ்வொரு நொடியும், செயல்பாடு உள்ளடக்கத்தை அமைக்கிறது கடிகாரம் மணிநேரம், நிமிடங்கள், வினாடிகள் மற்றும் AM/PM காலம் ஆகியவற்றை இணைப்பதன் மூலம் உருவாக்கப்பட்ட புதிய நேர சரத்திற்கு div உறுப்பு. இந்த டைனமிக் அப்டேட் கடிகாரம் துல்லியமாக இருப்பதை உறுதி செய்கிறது மற்றும் தற்போதைய நேரத்தை நிகழ்நேரத்தில் பிரதிபலிக்கிறது. இந்தக் குறியீட்டின் மட்டு இயல்பு, மீண்டும் பயன்படுத்துவதையும் மாற்றியமைப்பதையும் எளிதாக்குகிறது, அதனால்தான் இது நிகழ்நேர காட்சிகளை உள்ளடக்கிய திட்டங்களில் பரவலாகப் பயன்படுத்தப்படுகிறது.

டிஜிட்டல் கடிகாரத்திற்கான ஜாவாஸ்கிரிப்ட் செட் இன்டர்வல் சிக்கலை சரிசெய்தல்

தேதி பொருள் மற்றும் மட்டு குறியீடு கட்டமைப்பைப் பயன்படுத்தி ஜாவாஸ்கிரிப்ட் தீர்வு

// Solution 1: Basic approach using setInterval and modular functions
function updateClock() {
  const currentTime = new Date();
  let hours = currentTime.getHours();
  let minutes = currentTime.getMinutes();
  let seconds = currentTime.getSeconds();
  const period = hours >= 12 ? 'PM' : 'AM';

  hours = hours % 12 || 12; // Convert 24-hour format to 12-hour
  minutes = minutes < 10 ? '0' + minutes : minutes;
  seconds = seconds < 10 ? '0' + seconds : seconds;

  const clockTime = hours + ':' + minutes + ':' + seconds + ' ' + period;
  document.getElementById('clock').textContent = clockTime;
}

setInterval(updateClock, 1000); // Update clock every second
updateClock(); // Initialize clock on page load

பிழை கையாளுதலுடன் டிஜிட்டல் கடிகாரத்தை மேம்படுத்துதல்

உள்ளீடு சரிபார்ப்பு மற்றும் பிழை கையாளுதலுடன் ஜாவாஸ்கிரிப்ட் தீர்வு

// Solution 2: Advanced approach with error handling and validation
function getFormattedTime() {
  try {
    const currentTime = new Date();
    if (isNaN(currentTime.getTime())) {
      throw new Error("Invalid Date object");
    }
    let hours = currentTime.getHours();
    let minutes = currentTime.getMinutes();
    let seconds = currentTime.getSeconds();
    const period = hours >= 12 ? 'PM' : 'AM';

    hours = hours % 12 || 12;
    minutes = minutes < 10 ? '0' + minutes : minutes;
    seconds = seconds < 10 ? '0' + seconds : seconds;

    return hours + ':' + minutes + ':' + seconds + ' ' + period;
  } catch (error) {
    console.error("Error fetching time: ", error);
    return "Error displaying time";
  }
}

function updateClockWithErrorHandling() {
  const clockTime = getFormattedTime();
  document.getElementById('clock').textContent = clockTime;
}

setInterval(updateClockWithErrorHandling, 1000);
updateClockWithErrorHandling();

பல சூழல்களில் டிஜிட்டல் கடிகாரத்தை சோதிக்கிறது

முன்னோட்டக் கடிகாரச் செயல்பாட்டிற்கான யூனிட் சோதனைகளுடன் ஜாவாஸ்கிரிப்ட் தீர்வு

// Solution 3: Adding unit tests for the clock's functionality
function testClock() {
  const testDate = new Date("2024-01-01T13:05:07");
  const hours = testDate.getHours();
  const minutes = testDate.getMinutes();
  const seconds = testDate.getSeconds();
  console.assert(hours === 13, "Test failed: Expected 13 hours");
  console.assert(minutes === 5, "Test failed: Expected 5 minutes");
  console.assert(seconds === 7, "Test failed: Expected 7 seconds");
  console.log("All tests passed");
}

testClock(); // Run unit tests

நிகழ்நேர பயன்பாடுகளில் setInterval இன் முக்கியத்துவத்தைப் புரிந்துகொள்வது

பயன்படுத்துவதில் ஒரு முக்கியமான அம்சம் இடைவெளி () ஜாவாஸ்கிரிப்டில் நிகழ்நேர பயன்பாடுகளை உருவாக்குவதில் அதன் பங்கு உள்ளது. அது டிஜிட்டல் கடிகாரம், கவுண்டவுன் டைமர் அல்லது பங்குச் சந்தை டிக்கர்களாக இருந்தாலும் சரி, இடைவெளி () கைமுறை பயனர் தொடர்பு இல்லாமல் குறியீடு சீரான இடைவெளியில் இயங்குவதை உறுதிசெய்வதற்கு இது அவசியம். இருப்பினும், இந்த முறையைப் பயன்படுத்தும் போது, ​​டெவலப்பர்கள் செயல்திறன் சிக்கல்கள் குறித்து எச்சரிக்கையாக இருக்க வேண்டும். இடைவெளிச் செயல்பாடு எதிர்பார்த்ததை விட அதிக நேரம் எடுத்துக் கொண்டால், அது தாமதங்கள் அல்லது ஒழுங்கற்ற புதுப்பிப்புகளை ஏற்படுத்தலாம். இந்த சந்தர்ப்பங்களில், செயல்திறன்-உகந்த மாற்றுகளை கருத்தில் கொள்வது நல்லது கோரிக்கை அனிமேஷன் பிரேம்() மென்மையான புதுப்பிப்புகளுக்கு.

மற்றொரு முக்கியமான கருத்து துல்லியம் இடைவெளி (). ஜாவாஸ்கிரிப்ட் ஒற்றை-திரிக்கப்பட்ட சூழலில் இயங்குவதால், எந்தவொரு தடுப்புச் செயல்பாடும் (தீவிர கணக்கீடுகள் அல்லது நெட்வொர்க் கோரிக்கைகள் போன்றவை) டைமர் செயல்பாட்டை பின்தள்ளச் செய்யலாம். கேம்கள் அல்லது ஒத்திசைக்கப்பட்ட செயல்முறைகள் போன்ற நேர-உணர்திறன் பயன்பாடுகள் போன்ற துல்லியம் முக்கியமான நிகழ்நேர அமைப்புகளில், டெவலப்பர்கள் ஒன்றிணைக்க வேண்டியிருக்கலாம். இடைவெளி () மேலும் துல்லியமான நேரத்தை உறுதிசெய்ய திருத்த வழிமுறைகளுடன். எடுத்துக்காட்டாக, உண்மையான நேரத்திற்கும் எதிர்பார்க்கப்படும் நேரத்திற்கும் இடையிலான வேறுபாட்டைச் சரிபார்க்க நேர முத்திரையைப் பயன்படுத்துவது எந்த நேரச் சறுக்கலையும் சரிசெய்ய உதவும்.

கடைசியாக, பயன்படுத்தும் போது சரியான நினைவக மேலாண்மை முக்கியமானது இடைவெளி () நீண்ட கால பயன்பாடுகளில். தேவையில்லாத போது இடைவெளியை அழிக்கத் தவறினால் நினைவக கசிவுகள் ஏற்படலாம், இது காலப்போக்கில் பயன்பாட்டின் செயல்திறனைக் குறைக்கலாம். பயன்படுத்த எப்போதும் நினைவில் கொள்ளுங்கள் தெளிவான இடைவெளி() தேவையில்லாமல் இயங்கும் செயல்பாட்டை நிறுத்த. ஒற்றைப் பக்க பயன்பாடுகளில் (SPAs) கூறுகள் அடிக்கடி சேர்க்கப்படும் அல்லது அகற்றப்படும் சிக்கலான பயன்பாடுகள் அல்லது சூழ்நிலைகளில் இது மிகவும் முக்கியமானது.

JavaScript இல் setInterval பற்றி அடிக்கடி கேட்கப்படும் கேள்விகள்

  1. என்ன செய்கிறது setInterval() ஜாவாஸ்கிரிப்ட்டில் செய்யவா?
  2. setInterval() ஒரு செயல்பாட்டை மீண்டும் மீண்டும் அழைக்கிறது அல்லது குறிப்பிட்ட இடைவெளியில் (மில்லி விநாடிகளில்) குறியீட்டை இயக்குகிறது.
  3. ஒரு இடைவெளி இயங்குவதை நான் எப்படி நிறுத்துவது?
  4. பயன்படுத்தவும் clearInterval() மற்றும் திரும்பிய இடைவெளி ஐடியை அனுப்பவும் setInterval() அதை நிறுத்த.
  5. ஏன் என் setInterval() துல்லியமாக இல்லையா?
  6. ஜாவாஸ்கிரிப்ட் ஒற்றை-த்ரெட் ஆகும், எனவே எந்த தடை குறியீடும் தாமதமாகலாம் setInterval(), தவறான நேரத்திற்கு வழிவகுக்கும்.
  7. நான் பயன்படுத்தலாமா setInterval() நிகழ்நேர பயன்பாடுகளுக்கு?
  8. ஆம், ஆனால் செயல்திறன் மற்றும் நேரத் துல்லியத்தை நீங்கள் கருத்தில் கொள்ள வேண்டும், குறிப்பாக நேர-உணர்திறன் பயன்பாடுகளுக்கு.
  9. என்ன மாற்று setInterval() மென்மையான புதுப்பிப்புகளுக்கு?
  10. requestAnimationFrame() மென்மையான புதுப்பிப்புகளுக்கு, குறிப்பாக அனிமேஷன்களில் பெரும்பாலும் பயன்படுத்தப்படுகிறது.

ஜாவாஸ்கிரிப்ட் கடிகாரச் சிக்கல்களைச் சரிசெய்வதற்கான இறுதி எண்ணங்கள்

உங்கள் இடைவெளி () ஜாவாஸ்கிரிப்டில் செயல்பாட்டு டிஜிட்டல் கடிகாரத்தை உருவாக்குவதற்கு செயல்பாடு சரியாக வேலை செய்கிறது. தவறான மாறி கையாளுதல் அல்லது தவறாகப் பயன்படுத்துதல் போன்ற பொதுவான தவறுகள் தேதி பொருள் கடிகாரத்தை செயலிழக்கச் செய்யலாம். கவனமாக பிழைத்திருத்தம் அவசியம்.

பிழைகளைச் சரிபார்த்தல், நேரத்தைச் சரியாக வடிவமைத்தல் மற்றும் தேவையில்லாத இடைவெளிகளை நீக்குதல் போன்ற சிறந்த நடைமுறைகளைப் பயன்படுத்துவதன் மூலம், உங்கள் கடிகாரம் சீராக இயங்குவதை உறுதிசெய்யலாம். நினைவக கசிவுகள் மற்றும் தவறான நேர புதுப்பிப்புகள் போன்ற சிக்கல்களைத் தவிர்க்க இந்த நுட்பங்கள் உதவுகின்றன.

ஜாவாஸ்கிரிப்ட் டிஜிட்டல் கடிகார தீர்வுகளுக்கான குறிப்புகள் மற்றும் ஆதாரங்கள்
  1. எப்படி பயன்படுத்துவது என்பது பற்றிய தகவல் இடைவெளி () மற்றும் அதன் பொதுவான சிக்கல்களை சரிசெய்தல் அதிகாரப்பூர்வ Mozilla Developer Network (MDN) ஆவணத்தில் இருந்து சேகரிக்கப்பட்டது. நீங்கள் அதை மேலும் ஆராயலாம் MDN Web Docs: setInterval() .
  2. ஜாவாஸ்கிரிப்ட் செயல்திறனை மேம்படுத்துவதற்கான வழிகாட்டுதல், குறிப்பாக நிகழ்நேர பயன்பாடுகளில், ஜாவாஸ்கிரிப்ட் டைமர்கள் பற்றிய விரிவான வழிகாட்டியில் இருந்து குறிப்பிடப்பட்டுள்ளது. JavaScript.info: setTimeout மற்றும் setInterval .
  3. ஜாவாஸ்கிரிப்ட் கடிகாரங்களில் நேர வடிவமைப்பைக் கையாளுவதற்கான நடைமுறை தீர்வுகள் W3Schools வழங்கும் பயிற்சிகளை அடிப்படையாகக் கொண்டவை. விவரங்களைப் பார்க்கவும் W3Schools: JavaScript தேதி முறைகள் .