无法在 angularjs http 请求中获取函数返回值

阿比拉什·纳拉扬

对于 http 请求函数返回的值,我未定义。所以我在http内部调用http请求。

bmgApp.controller('cmpUserSoftwares', function($scope, $http) {
  $scope.records = {};
  $http({
    method: 'GET',
    url: 'http://megabot/mautonew/wp-json/bmg-comp-listing/v1/company/1'
  }).then(function successCallback(response) {
    // this callback will be called asynchronously
    // when the response is available
    $scope.records = response.data;
    for (var i = 0; i < $scope.records.length; i++) {
      console.log($scope.records[i]);
      angular.forEach($scope.records[i], function(value, key) {

        if (key == "maincategoryid") {
          value = getSoftwareCategory(value);
        }
        console.log(value + ' : ' + key);
      });
    }
    function getSoftwareCategory(value) {
      $http({
        method: 'GET',
        url: 'http://megabot/mautonew/wp-json/bmg-comp-listing/v1/software-category/' + value
      }).then(function successCallback(response) {
        var software_category = response.data;
        console.log(software_category);
        return software_category;
      }, function errorCallback(response) {
        console.log("Error");
      });
    }
    /*angular.forEach($scope.records, function(value, key){
         console.log( $scope.records[key].value + ' : ' + key);
         });*/
    //console.log(response.statusText);
  }, function errorCallback(response) {
    console.log("Error");
  });
});

getSoftwareCategory 函数中的 console.log 正在返回值,但未分配给 value 变量。我变得不确定

奇拉格·拉文德拉

getSoftwareCategory正在从内部调用异步调用,但实际上并没有返回任何内容。(调用父函数时不返回内部 then() 处理程序的返回值)

虽然这可能会做得更好,但作为第一步,getSoftwareCategory使用 then() 块返回 promise并执行值分配。

编辑:基于评论中的讨论的新代码

$http({
    method: 'GET',
    url: 'http://megabot/mautonew/wp-json/bmg-comp-listing/v1/company/1'
}).then(function successCallback(response) {
    function getSoftwareCategory(record) {
        return $http({
            method: 'GET',
            url: 'http://megabot/mautonew/wp-json/bmg-comp-listing/v1/software-category/' + record.maincategoryid
        }).then(function successCallback(response) {
            record.maincategoryid = response.data;
            return record;
        }, function errorCallback(response) {
            console.log("Error");
        });
    }
    var records = response.data;
    var promises = records.map(function (record) {
        return getSoftwareCategory(record);
    })
    return $q.all(promises).then(function (results) {
        $scope.records = results;
    });
}, function errorCallback(response) {
    console.log("Error");
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章