çıkışında hizmetlerde veri temizleme için en iyi yöntemler Bir web servisini kullanan ve çok sayıda sonucu önbelleğe alan çeşitli hizmetlerim var. Önbelleğe alma, hizmette bir değişkeni depolamak anlamına gelir. Bir kullanıcı oturumu kapatıldığında veriler temizlenmelidir. hizmetler aşağıdaki (basitleştirilmiş sürümü) gibi görünür:}AngularJs
class DataService {
private data;
constructor($http)
{
$http.get(url).then((response) =>
{
this.data = response.data;
});
}
typescript olmakla böyle bir şey olarak çözümlenir
:
var DataService = (function() {
function DataService($http) {
var _this = this;
$http.get(url).then(function (response) {
_this.data = response.data;
});
}
return DataService;
})();
cevabı kullanarak verileri temizlemek olabilir This Question içinde aşağıdaki gibi bir şeyler yapıyor:
$rootScope.on('logout',function(){
this.data = [];
});
Ancak, birden fazla hizmet ve denetleyicimiz olduğunda bu çok koddur. Ve hepimiz biliyoruz ki bu yeni adam bir servise bazı yeni veriler ekleyecektir ve bunu çıkış sırasına eklemeyi unutmaktadır. Bu sadece kötü bir uygulamadır.
Benzer şekilde, veriler uygulamanın çeşitli bölümlerinde $ kapsamına depolanır ve bu da temizlenmelidir. Denetleyicilerin yapıcıları her sayfa ziyaretine yüklendiğinden ve verileri geçersiz kılacağından, kapsam oldukça basittir.
Tek bir çözüm, yenilemeyi sağlamaktır, ancak bu, korkunç kullanıcı deneyimleri sağlar. Bir çözüm, hizmetlerin hiçbir zaman oluşturulmadığına veya tamamen açılmayacağına inandırmak için bir çözüm olabilir.
Bunu yapmanın en iyi yolu nedir? Verileri hizmetlerdeki değişkenlerde saklamak kötü mü?
İlginç bir soru:
Ayrıca referans için bu cevaba bakınız. Hizmetlerin kesinlikle * hepsi * giriş yapmış kullanıcılara güveniyor mu? TypeScript burada yararlı olabilir. Bir "tearDown()" yöntemini ortaya çıkaran "ILoggedInUserService" gibi bir arabirim tanımlayabilirsiniz. Bu, geliştiricinin tüm uygulanabilir hizmetler için bu yöntemi uygulamaya zorlayacaktır. Daha sonra [numaralandır] (http://stackoverflow.com/questions/19411502/angular-get-list-of-all-registered-services) ve – CodingIntrigue
çıkış oturumunu çalıştırabilirsiniz. İlgili hizmetler bu olayı dinleyerek verilerini temizler.Bu kodları hiçbir bağımlılık olmadan temiz tutun. – harishr