我正在制作一个简单的天气应用程序,它可以从天气API获取当前和每周预测。为了简单起见,我真的很喜欢我的weatherService
函数getForecast
,以某种方式进行两次AJAX调用 - 一次用于每周预测,我已经拥有,一次用于当前预测(遗憾的是,我不认为此API具有检索包含两者的JSON返回的方法)。我不确定这样做的最好方法,我对Angular很新。
这是我的服务:
weather.service('weatherService', function($resource, $http){
this.currentForecast = null;
// default city
this.city = 'Chicago, IL';
this.getForecast = function(location, type) {
return $http({
method : "GET",
url : "http://api.openweathermap.org/data/2.5/forecast/daily?q="+location+"&mode=json&cnt=7&appid=e92f550a676a12835520519a5a2aef4b"
}).then(
function(response) {
return response.data;
}
)
};
});
我想要第二个GET,从http://api.openweathermap.org/data/2.5/weather?q=Chicago,IL&appid=e92f550a676a12835520519a5a2aef4b检索并附加到响应中,以便返回一个对象。
另外,如果这不是实现这一目标的最佳方式,我当然愿意接受建议。
答案 0 :(得分:1)
您正在寻找的是角度承诺库$q
$q.all([$http(...), $http(...),...]).then(function(ret){
// ret has all results from all ajax calls
})
更具体地说:
weather.service('weatherService', function($resource, $http, $q){
this.getForecast = function(location, type) {
return $q.all([
$http.get(url1(location, type)),
$http.get(url2(location, type))
])
}
})
...
weatherService.getForcast(location, type).then(function(ret){
console.log(ret[0].data)
console.log(ret[1].data)
})
上使用$ q.all有很棒的视频
答案 1 :(得分:0)
嗯,你可以使用网络工作者,但是你有6个问题。您还可以使用then
回调链接请求。