Я пытаюсь добавить функцию прерывания в свое обещание в Угловом. При отладке кода я вижу, что функция добавляется как ожидалось. Однако, когда объект возвращается вызывающей службе, функция больше не существует. Я надеюсь, что это нечто тривиальное.Функция удаляется из объекта во время возврата
.factory('MatchmakerSearch', ['$resource', 'OBB_ENV_CONF', '$q', function ($resource,
OBB_ENV_CONF, $q) {
// Create the $resource object to handle the API requests
function _query(params) {
var _deferredAbort = $q.defer();
var _request = $resource(OBB_ENV_CONF.API_HOST + 'int/matchMaker', {}, {
'query': {
method: 'GET',
params: params,
isArray: false,
timeout: _deferredAbort.promise
}
});
var _promise = _request.query().$promise.then(// Convert from $resource to $http
function (response) {
return response;
}, function (response) {
return $q.reject('Ajax call aborted');
}
);
_promise.abort = function() {
_deferredAbort.resolve();
};
_promise.finally(function() {
_promise.abort = angular.noop;
_deferredAbort = _request = _promise = null;
});
return _promise; // <~~~~ abort function exists here
}
return {
query: _query
}
}
]);
Услуга делает вызов выглядит следующим образом:
_searchRequest = MatchmakerSearch.query(buildQueryParams()).then(function (result) {
// <~~~~ _searchRequest does not contain an abort() function.
});
Я действительно думал, что это будет простая вещь, чтобы код. Любые идеи о том, почему моя функция исчезает по возвращении?
(лицевая ладонь) вы, конечно, правы. –