【发布时间】:2017-10-24 01:42:03
【问题描述】:
我一直在努力理解 $q 是如何工作的几个小时。 我正在尝试使其与 google.maps api 中的函数一起使用,但我绝对无法自己回答,或者我完全不理解 $q。 我希望你能帮助我,或者至少给我一些解释。
这是我想做的一个非常简单的例子:
var geocoder = new google.maps.Geocoder();
let promise1 = geocoder.geocode({address: "someAddress"});
let promise2 = geocoder.geocode({address: "someOtherAddress"});
$q.all([promise1, promise2]).then(data => {
console.log(data)
});
//The ouput I get is : [undefined, undefined] but it's definitely not what I expect :P
我哪里错了?这是来自google api的原始异步方法,效果很好。
var geocoder = new google.maps.Geocoder();
geocoder.geocode({address: "someAddress"}, function(response, status){
if(status === 'ok')
//Do what I need with the response
else
//Do something else
});
问题是我想对多个请求做某事,而不仅仅是一个。 所以我需要在做某事之前存储所有的响应(并等待它们被存储,因为它是一个异步函数)。 这就是为什么我尝试使用 $q 来实现我的目标。
PS:也许这是一个双线程,因为我看到很多关于 $q 的讨论,但即使经过数小时的研究我也找不到问题......所以请不要告诉我谷歌它。
提前感谢您的帮助!
【问题讨论】:
标签: javascript angularjs google-maps asynchronous promise