RequestAnimationFrame, setInterval या setTimeout से बेहतर क्यों है
हालांकि setInterval और setTimeout दोनों का उपयोग एनीमेशन कार्यों के लिए किया जा सकता है, लेकिन requestAnimationFrame को आम तौर पर कई कारणों से एक बेहतर विकल्प माना जाता है। &&&]
1. डिस्प्ले रिफ्रेश रेट के साथ सिंक्रोनाइजेशन
requestAnimationFrame अपने कॉलबैक को डिवाइस के डिस्प्ले रिफ्रेश रेट, आमतौर पर 60Hz के साथ सिंक्रोनाइज करता है। इसका मतलब यह है कि एनीमेशन को लगातार फ्रेम दर पर अपडेट किया जाता है, जिससे सेटइंटरवल या सेटटाइमआउट के साथ होने वाली घबराहट और घबराहट दूर हो जाती है।
2। कम संसाधन खपत
setInterval और setTimeout निर्दिष्ट अंतराल पर अपने कॉलबैक कॉल करते हैं, भले ही ब्राउज़र सक्रिय रूप से रेंडर नहीं कर रहा हो। इससे अनावश्यक CPU उपयोग और बैटरी खत्म हो सकती है। दूसरी ओर, requestAnimationFrame अपने कॉलबैक को केवल तभी कॉल करता है जब ब्राउज़र एक नया फ़्रेम प्रदर्शित करने वाला होता है, जिससे संसाधनों की बचत होती है।
3। उन्नत उपयोगकर्ता अनुभव
requestAnimationFrame द्वारा संचालित एनिमेशन, सेटइंटरवल या सेटटाइमआउट का उपयोग करने वालों की तुलना में अधिक सहज और अधिक प्रतिक्रियाशील महसूस करते हैं। ऐसा इसलिए है क्योंकि requestAnimationFrame डिवाइस की ताज़ा दर को ध्यान में रखता है और यह सुनिश्चित करता है कि एनीमेशन एक सुसंगत, दृश्यमान सुखदायक गति से चलता है।
4. टाइमस्टैम्प की उपलब्धता
requestAnimationFrame अपने कॉलबैक के लिए एक टाइमस्टैम्प पैरामीटर प्रदान करता है, जो उस समय का प्रतिनिधित्व करता है जब फ्रेम प्रदर्शित होने के लिए निर्धारित होता है। इस टाइमस्टैम्प का उपयोग पिछले फ्रेम के बाद से बीते समय की गणना करने के लिए किया जा सकता है, जिससे अधिक सटीक एनीमेशन नियंत्रण और सुचारू बदलाव सक्षम हो सकते हैं।
5। कतरनी और झिलमिलाहट का उन्मूलन
requestAnimationFrame कतरनी (बेमेल एनीमेशन स्थिति) और झिलमिलाहट (अधूरा फ्रेम प्रदर्शित करना) जैसी समस्याओं को हल करता है जो सेटइंटरवल या सेटटाइमआउट के साथ हो सकती हैं। ऐसा इसलिए है क्योंकि यह अगले फ्रेम रेंडरिंग को केवल तभी शेड्यूल करता है जब वर्तमान फ्रेम पूरी तरह से स्क्रीन पर प्रस्तुत किया गया हो। संसाधन की खपत, उन्नत उपयोगकर्ता अनुभव, टाइमस्टैम्प की उपलब्धता, और कतरनी और झिलमिलाहट का उन्मूलन।