ජපන්හි සිටින වාහන ධාවකයෙක් තමන්ගේ Driver Personality Test (DPT) යෙදුමට රිප්ල් ඇනිමේෂන් එකක් එක් කරමින්, බ්ලින්ක් වන ටොයිලට් ලාම්පුවේ ආලෝකය සහ JavaScript හි isProcessing ෆ්ලැග් එකේ එකම කාර්යය ඇති බවට අවධානයට ගත්තා.
මෙම යෙදුමේ පරිශීලකයා පිළිතුරු බොත්තමක් ඔබන විට, අලුත් ප්රශ්නයක් තවත් තත්කාලිකව පෙන්වෙයි. නමුත් එකම බොත්තම අඛණ්ඩව ඔබා දැමුවහොත්, 50 ප්රශ්න කිසිදු කාලයක් නොගතව කෙටි මොහොතකම ඉවර කරගත හැක. මෙය ටෙස්ට් එකේ විශ්වාසනීයත්වය හා ලකුණු ගැලපීම අසාර්ථක කරයි.
මෙම ගැටළුවට විසඳුම් ලෙස, කේතයේ isProcessing නමැති ප්රවේශය එක් කරන ලදී. බොත්තම ඔබන විට පළමුව isProcessing = true කරයි, රිප්ල් ඇනිමේෂන් සහ පිළිතුරු සැකසීම සිදු කරන අතර, 300 ms පසු isProcessing = false කරයි. එම කාලය තුළ වෙනත් ක්ලික් ඇතුළත් නොවීමෙන්, අතිරේක සැකසීම්, අනිවාර්ය ලකුණු ගැටළු, UI එකම වේලාවක පෙනීම වළක්වයි.
කේතය ලියන අතරතුර, ගෘහස්ථ ටොයිලට් පැනුම් බොත්තම ඔබන විට ලාම්පුව බ්ලින්ක් වීම මත සිහිපත් විය. ඒ බ්ලින්ක් කාලය තුළ බොත්තම නැවත ඔබා ගත්තාම කිසිදු ප්රතිචාරයක් නොලැබේ. එය සමාන ලෙස isProcessing ෆ්ලැග් එකේ "true" තත්වය සමඟ සමාන වේ – පද්ධතිය ඔබේ ඉල්ලීම ලබාගෙන, එය සම්පූර්ණ කරන තෙක් අනෙකුත් ඉල්ලීම් අතහැරයි.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ අධ්යාපනය ලබන තරුණයින්, ස්වයං ඉගෙනුම් මාර්ගයෙන් වෙබ් සංවර්ධනය අරඹන දැනුම්කරුන්ට, මෙවැනි සරළ UI ආරක්ෂණ ක්රමයක් ඉගෙන ගැනීම අතිශය වැදගත් වේ. ඉක්මන් ක්ලික් වලින් පද්ධතිය බිඳදමීම වළක්වා, යෙදුම් විශ්වාසනීයත්වය වැඩි කරයි. ව්යාපාරික පරිසරය තුළ, ගනුදෙනුකාරයන්ගේ ක්රියාකාරිත්වය නිරීක්ෂණය කරමින්, අතිරේක පිරිවැය සහ පද්ධති අස්ථාවරතාව වැළැක්වීමට මේ වර්ගයේ "debounce" පදනමක් භාවිතා කළ හැකිය.
ඉන්පසු, සිසුන්ට JavaScript වල setTimeout සහ state flag පාවිච්චි කරමින්, සාර්ථක UI flow නිර්මාණය කරන ආකාරය පළපුරුදු වීමට අවස්ථාව ලැබේ. එමඟින්, ශ්රී ලාංකීය තාක්ෂණික සමාජයෙහි නිර්මාණශීලීත්වය හා ගුණාත්මකතා මට්ටම උසස් වේ.
අවසන් වශයෙන්, කුඩා පරිසරයක් වුවත්, පරිශීලක අත්දැකීමේ සුළු විස්තරයක් පවා සංකීර්ණ පද්ධතියේ විශාල බලපෑමක් ඇති බව මෙය පෙන්වා දෙයි. ඔබේ යෙදුමේ "isProcessing" වැනි flag එකක් හෝ පද්ධතියේ තත්ත්ව ආලෝකයක් එකතු කිරීම, අනාගතයේ වැඩි දියුණු, ආරක්ෂිත සහ පරිශීලක‑හිතකාමී නිර්මාණයක් සඳහා මූලික පියවර වේ.