मेरे पास अपने आवेदन में i18n सेवा है जिसमें निम्नलिखित कोड हैं:
var i18nService = function() {
this.ensureLocaleIsLoaded = function() {
if( !this.existingPromise ) {
this.existingPromise = $q.defer();
var deferred = this.existingPromise;
var userLanguage = $( "body" ).data( "language" );
this.userLanguage = userLanguage;
console.log( "Loading locale '" + userLanguage + "' from server..." );
$http( { method:"get", url:"/i18n/" + userLanguage, cache:true } ).success( function( translations ) {
$rootScope.i18n = translations;
deferred.resolve( $rootScope.i18n );
} );
}
if( $rootScope.i18n ) {
this.existingPromise.resolve( $rootScope.i18n );
}
return this.existingPromise.promise;
};
विचार यह है कि उपयोगकर्ता कॉल करेगा ensureLocaleIsLoadedऔर वादे के हल होने की प्रतीक्षा करेगा । लेकिन यह देखते हुए कि फ़ंक्शन का उद्देश्य केवल यह सुनिश्चित करना है कि लोकेल लोड किया गया है, यह उपयोगकर्ता के लिए कई बार आह्वान करने के लिए पूरी तरह से ठीक होगा।
मैं वर्तमान में सिर्फ एक ही वादा जमा कर रहा हूं और इसे हल कर सकता हूं यदि उपयोगकर्ता सर्वर से फिर से प्राप्त होने के बाद फ़ंक्शन को फिर से कॉल करता है।
मैं जो बता सकता हूं, वह इस उद्देश्य के अनुसार काम कर रहा है, लेकिन मैं सोच रहा हूं कि क्या यह एक उचित दृष्टिकोण है।