gpt4 book ai didi

AngularJS : chaining http promises $q in a service

转载 作者:行者123 更新时间:2023-12-02 23:40:29 25 4
gpt4 key购买 nike

当涉及到 AngularJS 中的 $http Promise 时,我遇到了问题。我在我的服务中这样做:( 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;  };});

当我在 Controller 中使用该服务时,它不输出 console.log:

blubb.getSomething(uri, input).then(function(data) {  console.log(data)});

编辑:如果我自己在“compactData”中定义回调函数,它可以工作,但我使用 https://raw.github.com/digitalbazaar/jsonld.js/master/js/jsonld.js 中的“jsonld.compact”这行不通!

    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));

最佳答案

我正在使用这样的链接 promise :

            $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);
});

关于AngularJS : chaining http promises $q in a service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16435962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com