私はajax呼び出しで、latとlongを持つデータを返します。ajax内で別のajax呼び出しの成功関数を呼び出す - jQuery
$.ajax(
{
url: 'json/data.json',
dataType : 'json',
type: 'get',
cache: false,
success: function(fullJSONData)
{
$(fullJSONData.events).each(function(index, oneJSONLine)
{
$('#eventList').append(newEvent(index, oneJSONLine))
});
},
error: function (e)
{
console.log("error " + e.message);
}
});
私は.eachを使用してループしていますし、ここでNEWEVENT機能を持つIは、緯度と長いジオコードを逆に別のAJAX要求を呼び出しています。
function newEvent(iter, event)
{
var placeName
getGeoCode(event.lat, event.long, function(returnAddress)
{
placeName = returnAddress
//other processing
}
}
function getGeoCode(lat, long, callback)
{
var newurl = "https://maps.googleapis.com/maps/api/geocode/json?latlng="
newurl += lat
newurl += ','
newurl += long
newurl += '&key=AIzaSyCgISQV9F_6VW_wqyJk9rM5rTWvoD_eqVs'
$.ajax(
{
//GeoCode Api
url: newurl,
dataType : 'json',
type: 'get',
cache: false,
success: function(fullJSONData)
{
callback(fullJSONData.results[0].formatted_address)
},
error: function (e)
{
console.log("error " + e.message);
}
});
私は何が起こっているのか理解していると思いますが、解決方法は少し分かりません。私はそれがajaxであるので、私が想像するようにそれの中のajaxが完了するのを待っていないと信じています。続行する前に各内部のajax呼び出しが完了するまで.eachを待たせることができますか?私はasync:false
を試しましたが、私はそれがメインスレッドでは良くないと言っています。
誰でも正しい方向に向けることができますか?私はちょうどコールバック関数を2番目のajax呼び出しのために働かせて、最初のajax呼び出しの周りに入れようとしましたが、それは私を少し超えています。
おかげ
呼び出します。 http://blog.slaks.net/2015-06-10/advanced-promise-usage/ – SLaks