Javascript 嵌套的$http调用$q.all返回承诺但未解析

Javascript 嵌套的$http调用$q.all返回承诺但未解析,javascript,angularjs,promise,q,Javascript,Angularjs,Promise,Q,我调用一个函数,该函数返回一个ID为的列表,我希望在链式调用中使用该列表。在我想读取所有返回的对象之前,一切似乎都正常。。这些都是承诺,但我不知道为什么我不能解决它们 //Get bubbles and then it calls another function getBubbleMessage with result from previous and last getBubbleMessage returns an array of promises. $scop

我调用一个函数,该函数返回一个ID为的列表,我希望在链式调用中使用该列表。在我想读取所有返回的对象之前,一切似乎都正常。。这些都是承诺,但我不知道为什么我不能解决它们

        //Get bubbles and then it calls another function getBubbleMessage with result from previous and last getBubbleMessage returns an array of promises. 

   $scope.loadStartPage = function () {

        $scope.getBubblesThatUserHasAccessTo().then($scope.getBubbleMessage).then(function (data) {
            $log.info("INFO:: " + data);
            $scope.bubblesWithMessages = data;


        });
    };

    $scope.getBubblesThatUserHasAccessTo = function () {
        var deferred = $q.defer();

        BubblesService.getBubblesUserAccess().then(function (result) {
            deferred.resolve(result);

        });

        return deferred.promise;
    };
此函数用于获取解析连接到上述服务返回的id:s的消息所需的某些内容

    $scope.getBubblesThatUserHasAccessTo = function () {
        var deferred = $q.defer();

        BubblesService.getBubblesUserAccess().then(function (result) {
            deferred.resolve(result);

        });

        return deferred.promise;
    };
此函数用于获取所有消息并返回promise对象,而这些我无法解析

    $scope.getBubbleMessage = function (data) {

        var deferred = $q.defer();
        var promises = [];

        angular.forEach(data, function (item) {
            $log.info("DDD" + item.name);
            var promise = BubblesService.getBubbleMessages(item.id, 0, 1);
            promises.push(promise);
        });

        //return $q.all([promises]);
        $q.all([promises]).then(function (result) {
            $log.info(result);
            return result[0];

        });

    };
上述函数返回60个对象的数组。。


最后,我想有一个新的对象,我在我的ng重复页上使用。我真的认为这是一件我不熟悉的事情,我承诺。。。。但是经过几个小时的努力,我真的需要帮助:)

$q.all需要一系列的承诺。在这里,您正在执行$q.all([MyPromissions]),它会立即解析,因为“[MyPromission]”是一个数组而不是一个承诺(当您只需要使用承诺数组时,您会给出一个数组参数,其中第一个且唯一的元素是一个承诺数组。所以[]而不是[])。第二个问题:您没有在父函数中返回此承诺

您只需更改块即可

$q.all([promises]).then(function (result) {
            $log.info(result);
            return result[0];

        });


将使用数组中每个承诺的已解析数组进行解析。

$q.all使用承诺数组。在这里,您正在执行$q.all([MyPromissions]),它会立即解析,因为“[MyPromission]”是一个数组而不是一个承诺(当您只需要使用承诺数组时,您会给出一个数组参数,其中第一个且唯一的元素是一个承诺数组。所以[]而不是[])。第二个问题:您没有在父函数中返回此承诺

您只需更改块即可

$q.all([promises]).then(function (result) {
            $log.info(result);
            return result[0];

        });


它将使用数组中每个承诺的已解析数组进行解析。

它应该是
返回$q.all([promises])
。应该是
返回$q.all([promises])。我试过了,它似乎可以工作,但是-我不知道在那之后如何访问这些对象。用我的方法。我如何才能看到它们的结构$scope.bubblesWithMessages=数据??有没有办法查看数据的外观?只需$scope.bubblesWithMessages=data;是的,数据是messageconsole.log(数据)的数组吗?{{bubblesWithMessages | json}}?你到底是什么意思?我做了一个JSON.stringify pådata对象,得到了这个。[[{“$$state”:{“status”:0},{“$$state”:{“status”:0},{“$$state”:{“status”:0},{“$$state”:{“status”:0},{“$$state”:{“status”:0},{“$$state”:{“status”:0},{“status”:0},你能展示你的BubblesService.getBubbleMessages方法的内容吗?我试过了,它似乎可以工作,但是-我不知道在那之后如何访问这些对象。在我的方法中。我如何看到它们的结构?$scope.bubblesWithMessages=data;?有没有办法看到数据的样子?只需$scope.BubbleWithMessages=data是的,数据是messageconsole.log(data)的数组{{bubblesWithMessages{124; json}}?你确切的意思是什么?我做了一个json.stringify pådata对象并得到这个。[{{$$state:{“status”:0},{“$$state”:{“status”:0},{“$$status”:{“status”:0},{“$$status”:{“status”:0},{$$status”:{“status”:0},{$$status:},能否显示BubbleService.getBubbleMessages方法的内容?