Я получаю ошибку Cannot read property of '$promise' of undefined.
Вот код, который бросает его:
var myPromise = sharedDataService.getData($scope.entityId).$promise;
resolvePromise(myPromise, 'entityData');
resolvePromise
метод:
function resolvePromise(promise, resultObject){
promise.then(function(response){
$scope[resultObject] = result;
});
promise['catch'](function(error){
//error callback
});
promise['finally'](function(){
//finally callback
});
sharedDataService выглядит следующим образом:
var publicInterface = {
getData: getData
};
var storedData;
function getData(entityId) {
if(storedData.entityId === entityId){
return storedData;
}else{
var entityDataPromise = dataAccessService.getEntityData(entityId).$promise;
entityDataPromise.then(function (response) {
storedData = response;
return storedData ;
});
entityDataPromise['catch'](function(error) {
//throw error;
});
entityDataPromise['finally'](function(done) {
//do finally
});
}
}
return publicInterface;
наконец, dataAccessService:
var publicInterface = {
getEntityData: getEntityData
}
var entityData = $resource(apiUrl + 'Entity', {}, {
'getEntityData': {
method: 'GET',
url: apiUrl + 'Entity/getEntityDataById'
}
}
function getEntityData(entityId){
return entityData.getEntityData({entityId: entityId})
}
return publicInterface;
оригинальное обещание бросает ошибку. Когда я помещал точки останова в разные места, я могу видеть, что мои данные иногда возвращаются. Функциональность sharedDataService является почти одним из сервисов chaching.
Почему мое первоначальное обещание возвращается не определено?
'GetData()' не возвращает ничего, если 'if' ложно. «Возврат» внутри обратного вызова не возвращается к внешней функции – charlietfl
@charlietfl Существует строка, в которой говорится 'return storedData' в'. Then' инструкции else? –
Это возвращается только в 'then()' ... он не возвращается к 'getData()'. Вам нужно будет вернуть обещание для обоих условий 'if' – charlietfl