Javascript 嵌套的$http调用$q.all返回承诺但未解析
我调用一个函数,该函数返回一个ID为的列表,我希望在链式调用中使用该列表。在我想读取所有返回的对象之前,一切似乎都正常。。这些都是承诺,但我不知道为什么我不能解决它们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
//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方法的内容?