我需要通過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