こんにちは気象プロジェクト用に2つのJSONリクエストがあります。ユーザーの2番目のリクエストをパーソナライズするために最初のリクエストからデータが必要です。私の最初のリクエストはユーザーの緯度と経度を取得し、2番目のリクエストはその場所の現在の天気予報のURLの座標を必要とします。時系列同期getJSONリクエストの実行
var arrLocat = [];//users suburb, city, country, lat and lon
var userURL = "";//specific url tailored off users lat and lon
var userWeather = [];//current weather at users lat and lon
$(document).ready(function(){
//first JSON request
$.getJSON("http://ip-api.com/json", function (data){
arrLocat = data;
userURL = "http://api.openweathermap.org/data/2.5/weather?lat=" + arrLocat.lat + "&lon=" + arrLocat.lon + "&appid=61c4ebe6f40d2e2d7085e7c42d287e1d&units=metric";
console.log(arrLocat);THIS RETURNS FIRST, WORKS FINE
})
//second JSON request
.then(function(){
$.getJSON(userURL).done(function(index){
userWeather = index;
console.log(userWeather);//THIS RETURNS LAST, WORKS FINE BUT SHOULD RETURN SECOND
});
})
//do stuff here
.then(function(){
$("#locat").text(arrLocat.city + ", " + arrLocat.regionName + ", " + arrLocat.country);
console.log(userWeather);//THIS RETURNS BLANK GLOBAL VALUE, NOT CARRYING VALUE FROM SECOND .THEN FUNCTION ALSO SHOULD RETURN LAST NOT SECOND
})
});
私は彼らが書かれているために、これらを実行しようとしているが、私は実行する前に完了する前のを待つために、順序を強制しました()getJSONが非同期であるが、私は.thenを考えていることを理解しています。
何が起きているのか把握するのに長い時間がかかりました。私の最後の.then()は2番目の.then()JSON要求の前に実行されているようです。 私は、私が気付いていない、根本的に何かをやっているかもしれないので、遅延オブジェクトに新しいですか?
ありがとう!私は何をしているのか正確には分かっていませんでしたが、提供した構造が大きく助けられました。 – Doodles