0
私は角サービスMyServiceを持っています その中にgetメソッドがあります。それは私が3つの異なるコントローラにこのサービスを渡すとき、彼らはすべてのサーバーからの変数の値を取得する変数が定義されていない場合、変数複数のサーバーからのサービスを防ぐ
export class MyService{
private userSettings: UserSettings;
private updateProcessing: boolean = false;
private deferred : any;
constructor(
private $http: ng.IHttpService,
private $q: ng.IQService,
private $log: ng.ILogService) {
}
public get(fromServer: boolean = false) {
var self = this;
if (self.updateProcessing) {
return self.deferred.promise;
}
else if (!self.userSettings || fromServer) {
return self.getFromServer();
} else
return self.$q.resolve(self.userSettings);
}
private getFromServer(): ng.IPromise<any> {
var self = this;
self.updateProcessing = true;
self.deferred = self.$q.defer();
var url = self.getSettingsUrl();
self.$http.get(url).then(
(result: any) => {
self.userSettings = result.data;
self.updateProcessing = false;
self.deferred.resolve(result.data);
},
error => {
this.$log.error(error);
self.updateProcessing = false;
self.deferred.reject(error);
}
);
return self.deferred.promise;
}
}
を返すoverwiseのにサーバーから情報を取得し、ローカル変数に設定します。 私は約束を救おうとしています。要求がすでに解決している間に要求を出していて、新しいものを作成していない場合、 は、今のコードを持つ私は、コントローラ
this.MyService.get().then(()=>{
});
で行い、その後、内部のコールバックを取得することはありません投稿しました。 重要なのであれば、角度ライブラリのバージョン「1.5.8」を使用します。
感謝を返しますアンチパターンをされて返すことに注意してくださいあなたはそんなに!!!! –