我正在尝试编写一个返回promise的函数.但有时候请求的信息是立即可用的.我想将它包装在一个承诺中,以便消费者不需要做出决定.
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); });
问题是回调不会针对预解析的承诺执行.这是合法的事吗?有没有更好的方法来处理这种情况?