0
連鎖約束で失われた余分な「成功」の方法で、私はこのように、それにいくつかの余分なメソッドを追加私のangularJSで「$のQ」のためのデコレータ持っている:
angular
.module('myApi', [])
.config(function ($provide) {
$provide.decorator('$q', function ($delegate) {
var defer = $delegate.defer;
$delegate.defer = function() {
var deferred = defer();
deferred.promise.success = function (fn) {
deferred.promise.then(function(response) {
fn(response.data, response.status, response.headers);
});
return deferred.promise;
};
return deferred;
};
return $delegate;
});
});
をしかし、私は、APIでこれを行うときにメソッドが消える:
var DataFactoryBase = {
get: function (url, headers) {
var dfr = $q.defer();
dfr.resolve(api_bridge ({
execute: function() {
return $q.resolve($http.get(url, {headers: headers}));
}
}));
//this line still holds the decorator method
var withSuccessMethod = dfr.promise;
//this line returns a promise without the decorator methods
var lostSuccessMethod = dfr.promise.then(handlerSuccessResponse, handlerErrorResponse);
return lostSuccessMethod;
}
}
function handlerSuccessResponse(response) {
//do stuff
return $q.resolve(response);
}
function handlerErrorResponse(response) {
//do stuff
return $q.reject(response.data);
}
にはどうすれば.thenも成功メソッドで約束を返すことができますか?