আমার অ্যাপ্লিকেশনটিতে আমার আইআইএনএন পরিষেবা রয়েছে যা নীচের কোডগুলি সহ:
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করে প্রতিশ্রুতিটি সমাধানের জন্য অপেক্ষা করবেন। কিন্তু দেওয়া যে ফাংশন উদ্দেশ্য শুধুমাত্র হয় তা নিশ্চিত যে লোকেল লোড করা হয়, এটা পুরোপুরি জরিমানা ব্যবহারকারী এটিকে বেশ কয়েকবার ডাকা হতে হবে।
আমি বর্তমানে কেবল একটি প্রতিশ্রুতি সংরক্ষণ করছি এবং সার্ভার থেকে লোকেল সফলভাবে পুনরুদ্ধার করার পরে যদি ব্যবহারকারী আবার ফাংশনটি কল করে তবে তা সমাধান করুন।
আমি যা বলতে পারি তা থেকে, এটি উদ্দেশ্য হিসাবে কাজ করছে, তবে আমি ভাবছি যে এটি কোনও সঠিক পদ্ধতি কিনা।