AngularJS:在服务中链接http承诺$q
发布时间:2020-12-17 07:27:08 所属栏目:安全 来源:网络整理
导读:当谈到 angularjs中的$http承诺时,我遇到了问题.我在我的服务中这样做:( getSomething函数应链接两个promise) 第二个函数使用外部回调函数! app.service('blubb',function($http,$q) { var self = this; this.getSomething = function(uri,data) { return s
当谈到
angularjs中的$http承诺时,我遇到了问题.我在我的服务中这样做:( getSomething函数应链接两个promise)
第二个函数使用外部回调函数! app.service('blubb',function($http,$q) { var self = this; this.getSomething = function(uri,data) { return self.getData(uri).then(function(data2) { return self.compactData(uri,data2); }); }; this.getData = function(uri) { var deferred = $q.defer(); $http.get(uri).success(function(data) { deferred.resolve(data); }).error(function() { deferred.reject(); }); return deferred.promise; }; this.compactData = function(uri,data) { var deferred = $q.defer(); /* callback function */ if(!err) { console.log(compacted); deferred.resolve(compacted); } else { console.log(err); deferred.reject(err); } /* end of function */ return deferred.promise; }; }); 当我在我的控制器中使用该服务时,它不会输出console.log: blubb.getSomething(uri,input).then(function(data) { console.log(data) }); 编辑: jsonld.compact(input,context,function(err,compacted) { if(!err) { console.log(compacted); deferred.resolve(compacted); } else { deferred.reject('JSON-LD compacting'); } }); 我在jsonld.compact中获取console.log输出,但解决方案不起作用,我不知道为什么.. 它只适用于$rootScope.$apply(deferred.resolve(compacted));
我正在使用这样的链接承诺:
$http.get('urlToGo') .then(function(result1) { console.log(result1.data); return $http.get('urlToGo'); }).then(function(result2) { console.log(result2.data); return $http.get('urlToGo'); }).then(function(result3) { console.log(result3.data); }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |