Ich habe eine Wetter-Website gebaut, die die Flickr API 1st ruft, ruft dann die Yahoo API für das Wetter. Das Problem ist, dass die Daten vom Ajax-Aufruf - von der Yahoo-API - nicht rechtzeitig zur Verfügung stehen, damit die Seite ihren Inhalt laden kann.Ajax Anruf wird nicht synchron ausgeführt
Einige der Dinge, die ich verwendet habe, um zu versuchen und den Ajax-Aufruf zu verlangsamen:
setTimeout
- die gesamte Funktion Einwickeln dass
$.ajax(success:)
Anrufe in einer anderen Funktion, Einwickeln insetTimeout
- die Einnahme Callback-Funktion aus
$.ajax(success:)
, und setzen in die$.ajax(complete:)
param - unter der
data
Objekt, dass$.ajax(success:)
geht in und Kopieren, dass dann zu einem anderen var außerhalb von Ajax-Aufruf zu gehen und die Funktion setzen, dass die Daten innerhalb von$.ajaxComplete()
Griffen, neues Objekt übergibtvar
Es gibt mehr Möglichkeiten, dass ich versucht habe, zu gehen das, aber ich bin seit 3 Tagen dabei und kann keine Lösung finden. Kann mir bitte jemand helfen hier
Hier ist ein Link zu dem Projekt ist
function RunCALL(url)
{
var comeBack = $.ajax({
url: url,
async: false,
dataType:"jsonp",
crossDomain: true,
method: 'POST',
statusCode: {
404: function() {console.log("-4-4-4-4 WE GOT 404!");},
200: function() {console.log("-2-2-2-2 WE GOT 200!");}},
success: function(data){
weatherAndFlickrReport(data);},
error: function(e) {console.log(e);}
});
}
können Sie uns Code zeigen? – Pevara
Asynchronicity ist der Punkt von Ajax (das A steht für "Asynchronous"). Wenn Sie die gesamte Logik in den Success-Handler legen und kein Teil der Seite davon abhängt, dass Ajax sofort zurückkommt, ist alles in Ordnung. –
Bitte zeigen Sie Ihren Code. Wir können keine asynchronen Probleme ohne sie beheben – charlietfl