gpt4 book ai didi

javascript - Angular 使用第一个的结果调用链中的两个 Promise

转载 作者:行者123 更新时间:2023-12-03 09:27:46 24 4
gpt4 key购买 nike

我仍然遇到 Angular promise 的问题。我有三个工厂:getPosition,它显然获取当前位置,geoCode,它使用谷歌的反向地理编码来获取城市名称,以及getData >,它根据位置从 API 获取一些数据。我需要在获得位置后立即调用 geoCodegetData 。我设法像这样链接 getPositiongeoCode:

getPosition.get().then(function(geoInfo){
$scope.$storage.geoInfo = geoInfo;
return geoCoding.getFromObj(geoInfo).then(function(city){
$scope.$storage.city = city;
$scope.city = $scope.$storage.city;
},function(reason){
alert("Geocoding error: " + reason);
})
}, function(reason){
alert("Location error: " + reason);
});

如何将对 getData 的调用添加到链中,以便使用第一次调用的数据来调用它?我尝试过这样的事情:

getPosition.get().then(function(geoInfo){
$scope.$storage.geoInfo = geoInfo;
return function(geoInfo){
geoCoding.getFromObj(geoInfo).then(function(city){
$scope.$storage.city = city;
$scope.city = $scope.$storage.city;
},function(reason){
alert("Geocoding error: " + reason);
});
getData.getFromObj(geoInfo).then(function(data){
$scope.$storage.data=data;
})
}
}, function(reason){
alert("Location error: " + reason);
});

但是 geoCodinggetData 都不能以这种方式工作。此外,互联网上的大多数教程/文章都解释了如何一个接一个地链接调用,但我找不到任何解释如何像我需要的那样链接它们的内容。

最佳答案

你有没有尝试过这样的:

getPosition()
.then(function(pos){
return getGeoCoding(pos); // should return promise
})
.then(function(geo){
return getData(geo); // should return promise
})
.then(function(data){
// do stuff with data
})
.catch(function(err){ // falls to this if any of the above fails
//console err
});

这只是一个原则,但你明白了。

关于javascript - Angular 使用第一个的结果调用链中的两个 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31612576/

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