Я пытаюсь написать функцию, которая возвращает обещание. Но есть моменты, когда запрашиваемая информация доступна немедленно. Я хочу обернуть это обещанием, чтобы потребителю не нужно было принимать решение.
function getSomething(id) {
if (Cache[id]) {
var deferred = $q.defer();
deferred.resolve(Cache[id]); // <-- Can I do this?
return deferred.promise;
} else {
return $http.get('/someUrl', {id:id});
}
}
И используйте его следующим образом:
somethingService.getSomething(5).then(function(thing) {
alert(thing);
});
Проблема заключается в том, что обратный вызов не выполняется для обещанного обещания. Это законная вещь? Есть ли лучший способ справиться с этой ситуацией?