gpt4 book ai didi

javascript - 当最后一次调用需要其中一个 promise 时如何使用 $q.all

转载 作者:行者123 更新时间:2023-12-01 03:10:28 25 4
gpt4 key购买 nike

我必须进行 3 次调用,完成后将返回一个对象。前两个调用是独立的,但是第三个调用需要从前两个调用之一返回的一个数据值作为参数之一。下面的模式很困惑,我试图避免在调用 myFunction 的地方进行第三次调用,关于如何解决这个问题的任何想法

function myFunction(){
var promise1 = $http({method: 'GET', url: 'a/pi-o-url', cache: 'true'});
var promise2 = $http({method: 'GET', url: '/api-v-url', cache: 'true'});

var myNewObj = {obj1:{}, obj2: {}, obj3: {}};
$q.all([promise1, promise2])
//i'd like to somehow make all the calls in one single function (within myFunction and juts return a single object)
}

我不想做:

myFunction()
.then(function(data){
myNewObj.obj1 = data[0];
myNewObj.obj2 = data[1];
myService(data[0].id).then(function(moreData){
myNewObj.obj3 = moreData;
return moreData;
})

有什么想法吗?

最佳答案

您可以执行以下操作:

function myFunction() {
var promise1 = $http({ method: 'GET', url: 'a/pi-o-url', cache: 'true' });
var promise2 = $http({ method: 'GET', url: '/api-v-url', cache: 'true' });

return $q.all([promise1, promise2]).then(function (data) {
var myNewObj = {
obj1: data[0],
obj2: data[1]
};

return myService(data[0].id).then(function (moreData) {
myNewObj.obj3 = moreData;
return myNewObj;
});
}
}

这样,用promise chaining ,来自 myFunction 的 promise 将通过完整的对象来解析。

关于javascript - 当最后一次调用需要其中一个 promise 时如何使用 $q.all,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45887682/

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