0
注:私はプライベートメソッドのいくつかの概念とES6クラスを実装しようとしています私のtranspilerES6:これはバインドを使用しているにもかかわらず定義されていません()
ためバベルを使用しています。これを行うために、クラス宣言の外で関数を宣言しました。また、DRYプラクティスのクロージャを使用しようとしています。
しかし、私のクラスメソッドが "private"メソッドを呼び出すと、のコンテキストは未定義になります。私はbind()を使うとコンテキストを明示的に設定すると考えられていましたが、動作しているようには見えませんでした。
function _invokeHttpService(httpMethod) {
return (url, config, retries, promise) => {
var s = this;
// Do some additional logic here...
httpMethod(url, config)
.then(
response => {
s._$log.info(`Successful response for URL: ${url}`);
promise.resolve(response);
},
error => {
s._$log.error(`Request for URL: ${url} failed.`);
promise.reject(error)
});
}
}
function _get(url, config, retries, promise) {
_invokeHttpService(this._$http.get);
}
class httpSessionService {
/*@ngInject*/
constructor($log, $http, $q, $timeout, CODE_CONSTANTS, $rootScope) {
this._$log = $log;
this._$http = $http;
this._$q = $q;
this._$timeout = $timeout;
this._$rootScope = $rootScope;
this._CODE_CONSTANTS = CODE_CONSTANTS;
}
get(url, config, retries = 5) {
var s = this;
var deferred = s._$q.defer();
_get(url, config, retries, deferred).bind(this);
return deferred.promise;
}
}
これは素晴らしい説明です。ありがとうございます! – rawkfist0215