我需要通过HERE Map geocoder处理数据列表,以将locationId转换为坐标。 地理编码器类具有地理编码函数需要3个参数1个参数2. successCallFunction 3. failCallFunction。
self.geocodeByLocationIdByArray = function (locationIds, callback)
{
var deferred = $.Deferred();
var result = [];
var convert = function() {
for (var i = 0; i < locationIds.length - 1; i++)
{
geocodingParameters = {
locationId: locationIds[i].locationId;
};
self.geocoder.geocoder(geocodingParameters, onGeocodeSuccess, function() { });
}
};
convert();
return deferred.promise();
};
onGeocodeSuccess = function (result) {
var locations = result.Response.View[0].Result,
i;
var result = [];
// Add a marker for each location found
for (i = 0; i < locations.length; i++) {
result.push(new geoCoordinate(locations[i].Location.DisplayPosition.Latitude, locations[i].Location.DisplayPosition.Longitude));
}
return result;
};
如何解决geocodeByLocationIdByArray功能等待,直到所有数据之前,并返回结果数组?我就那么一点点停止:(我的问题是,地理编码是异步。
的[?我如何返回从一个异步调用的响应(可能的复制http://stackoverflow.com/questions/14220321/how-do-i-return-the-异步调用响应) –
你不能,因为它是异步的。它看起来像你正在传递一个回调函数,为什么一旦你得到你的结果不调用该函数? –
你选择使用'$ .Deferred'而不是ES6 Promise的任何原因? – trincot