gpt4 book ai didi

angularjs - q.all 不适用于多个 promise

转载 作者:行者123 更新时间:2023-12-04 13:11:07 26 4
gpt4 key购买 nike

我有以下 q.all 调用来解决两个 promise 。我检查了所有帖子并尝试了所有其他实现方式 q.all 和相同的情况

var xyzdeffered = $q.defer();
service1.getServiceDetail1($routeParams.id).then(function(promise) {
xyzdeffered.resolve(promise);
});

var abcdeffered = $q.defer();
service2.getServiceDetail2($routeParams.id).then(function(promise) {
abcdeffered.resolve(promise);
});


$q.all([ xyzdeffered, abcdeffered ]).then(function(data) {

$scope.variable = data;

});

我期望 q.all 中的变量只有在前两个 promise 得到解决后才会被填充。但不幸的是,服务调用本身并没有返回数据,并且控制转移到 q.all。我觉得这很奇怪,因为根据文档,只有当您的 promise 返回 200 个响应并得到解决时,才会调用 q.all。
我检查了分析网络调用并放置了一些警报以查看代码的顺序,发现 q.all 警报是第一个弹出的警报,然后解决了其他 promise 。
这真的让我很生气,为什么 q.all 的简单实现不起作用..
任何帮助将不胜感激。

最佳答案

为什么不在第一次 promise 时直接调用 $q.all ?

$q.all([
service1.getServiceDetail1($routeParams.id),
service2.getServiceDetail2($routeParams.id)
]).then(function(data) {
//Array of result [resultOfgetServiceDetails1, resultOfgetServiceDetails2]
$scope.variable = data;
});

关于angularjs - q.all 不适用于多个 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30248095/

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