有利的$承诺,而不使用延期
网上关于承诺的一切都说不要用angular.js上的docs / examples之类的promise来使用延迟。
什么是正确的方式来返回一个angular.js $承诺的价值而不使用延期?
这是我现在有的:
function foo() { var deferred = $q.defer(); userService.findProgramsByUser({personId: personId}).$promise .then(function (programs) { deferred.resolve(programs); }); return deferred.promise; }
如果我使用节点Q库,我会这样做:
function foo() { return Q.promise(function(resolve, reject) { userService.findProgramsByUser({personId: personId}) .then(function (programs) { resolve(programs); }); } }
我怎么能做一个类似的angular度承诺,而不必使用延期?
由于userService.findProgramsByUser()
已经有一个承诺财产,只是返回
function foo() { return userService.findProgramsByUser({personId: personId}).$promise .then(function (programs) { return programs; }, function(){ // handle errors }); }
我真的不明白为什么使用延迟是不好的。 在大多数情况下我的服务如下所示:
var defers = {}; //somewhere in the service root. getData: function(id){ var defKey = 'getData' + id; if(defers.hasOwnProperty(defKey)) return defers[defKey].promise; //here is a good spot to return something from custom cache defers[defKey] = $q.defer(); serverApiRequest('/api/...').then(function(response){ defers[defKey].resolve(response.data); delete defers[defKey]; }); return defers[defKey].promise; }
延期承诺是真棒。 通过这样的方法,我们可以100%确定服务器只会被请求一次,并且每个并行请求将被服务。
- Angular.JS中的Resource + Socket.io工厂
- 错误:JSONparsing错误:使用angular translate时,属性名称必须是string文字
- mongodb数据库的表格和表示
- 用于Node.js或Javascript库的DWG转换器
- 我想访问一个JS文件中提供的enTranslations如下所示,但我不能够访问它
- 使用MEAN堆栈和Passport时,如何在用户注册时保存其他字段?
- 如何检查从req.user的用户ID从Passport JS和MongdoDB用户ID匹配更新/删除文档之前?
- 我如何将Node.js实现为Ionic / Angular应用程序?
- 从redirect表示护照authentication空白页面