में लॉगआउट पर सेवाओं में क्लियरिंग डेटा के लिए सर्वोत्तम प्रथाएं मेरे पास कई सेवाएं हैं जो एक webservice का उपयोग करती हैं और बहुत सारे परिणामों को कैश करती हैं। कैशिंग द्वारा मेरा मतलब है सेवा पर एक चर में संग्रह करना। जब कोई उपयोगकर्ता डेटा लॉग आउट करता है तो उसे साफ़ किया जाना चाहिए। सेवाओं निम्नलिखित (सरलीकृत संस्करण) की तरह दिखता है:AngularJs
class DataService {
private data;
constructor($http)
{
$http.get(url).then((response) =>
{
this.data = response.data;
});
}
}
कौन सा टाइपप्रति है, लेकिन कुछ इस तरह करने के लिए हल करता है:
var DataService = (function() {
function DataService($http) {
var _this = this;
$http.get(url).then(function (response) {
_this.data = response.data;
});
}
return DataService;
})();
मैं डेटा का उपयोग कर जवाब स्पष्ट कर सकता है This Question जो कुछ ऐसा कर रहा है:
$rootScope.on('logout',function(){
this.data = [];
});
हालांकि, यह बहुत सी कोड है जब हमारे पास कई सेवाएं और नियंत्रक हैं। और हम सभी जानते हैं कि यह नया लड़का किसी सेवा में कुछ नया डेटा जोड़ देगा और वह इसे लॉगआउट अनुक्रम में जोड़ना भूल जाएगा। यह बस एक बुरा अभ्यास है।
इसी तरह, डेटा के आवेदन के विभिन्न हिस्सों में डेटा स्कोप पर संग्रहीत किया जाता है और इसे भी साफ़ किया जाना चाहिए। दायरा इतना आसान है क्योंकि नियंत्रकों के लिए कन्स्ट्रक्टर प्रत्येक पृष्ठ विज़िट पर लोड होते हैं और फिर डेटा को ओवरराइड करेंगे।
एक प्रस्तावित समाधान ताज़ा करना है, हालांकि यह भयानक उपयोगकर्ता अनुभव देता है।
एक समाधान यह सुनिश्चित करने के लिए किया जा सकता है कि सेवाओं को कभी भी बनाया नहीं गया है या पूरी तरह से कोणीय पुनः लोड नहीं किया गया है।
ऐसा करने का सबसे अच्छा तरीका क्या है? क्या सेवाओं पर चर में डेटा स्टोर करना बुरा है?
दिलचस्प सवाल:
इसके अलावा अपने संदर्भ के लिए इस सवाल का जवाब देखें। निश्चित रूप से * आपकी सभी सेवाओं में से सभी लॉग इन उपयोगकर्ता पर भरोसा नहीं करते हैं? टाइपस्क्रिप्ट यहां उपयोगी हो सकता है। आप एक इंटरफ़ेस को परिभाषित कर सकते हैं, 'ILoggedInUserService' कहें जो 'tearDown()' विधि का खुलासा करता है। इससे डेवलपर को सभी लागू सेवाओं के लिए इस विधि को लागू करने के लिए मजबूर किया जाएगा। फिर आप [enumerate] (http://stackoverflow.com/questions/19411502/angular-get-list-of-all-registered-services) कर सकते हैं और लॉग आउट पर निष्पादित कर सकते हैं – CodingIntrigue
मैं किसी ईवेंट को प्रसारित करके इसके साथ सौदा करता हूं, और सभी प्रासंगिक सेवाएं उस घटना को सुनकर अपने डेटा को साफ करती हैं।यह कोड को किसी भी अंतर-निर्भरता के साथ साफ रखता है। – harishr