Ich bin verwirrt über die Verwendung der Option async: false mit $ .ajax(). Entsprechend der $ .ajax() - Dokumentation:
Ab jQuery 1.8 ist die Verwendung von async: false mit jqXHR ($. Delerent) veraltet; Sie müssen die success/error/complete Callback-Optionen anstelle der entsprechenden Methoden des jqXHR-Objekts wie jqXHR.done() oder der veraltete jqXHR.success() verwenden.
Ich weiß nicht, was jqXHR ($ .Laut) bedeutet. Verwendet async: false aus irgendeinem Grund abgeschrieben, oder ist jqXHR ($ .Deferred) eine Art besonderer Anwendungsfall?
frage ich, als ich Probleme habe ein $ Schnipsel bekommen() aufrufen asynchronously.This geschehen ist mit jQuery 1.8.2:
var ret = {};
$.ajax({
async: false,
method: 'GET',
contentType: 'application/json',
dataType: 'jsonp',
url: '/couchDBserver',
error: myerr,
success: function(data) {
var rows = data.rows;
//something that takes a long time
for(var row in rows) {
ret[rows[row].key] = rows[row].value;
}
console.log('tick');
}
});
console.log('tock');
console.log(JSON.stringify(ret))
Meine Konsolenausgabe ist:
tock
{}
tick
ich etwas falsch tue, oder bin ich doi ng etwas falsch?
Ich würde den 'tock'-Code und alles andere, was benötigt wird, um nach der Ajax-Anfrage in der' success'-Funktion ausgeführt werden. Async AJAX ist ein wenig schlampig. – MattDiamant
Ich nehme an, dass es unmöglich ist, eine synchronisierte 'JSONP' Anfrage zu erstellen, da es überhaupt kein' AJAX' ist. Ich sehe, dass Sie Daten von demselben Ursprung laden, irgendeinen Grund, 'JSONP' zu verwenden? – Tommi
Ich verstehe das und es ist etwas, das ich in der Vergangenheit zu vermeiden versucht habe. Ich habe jedoch oft einen Spagetti-Code, der im Wesentlichen versucht, synchrone Anfragen zu stellen. Manchmal müssen Sie eine Anfrage machen, die Ergebnisse bewerten und dann eine weitere Anfrage basierend auf Ihrer Einschätzung (ad infinitum) machen. Gibt es etwas, was ich nicht über $ .ajax() verstehe, das synchrone Anfragen zu einer schlechten Sache macht? Gibt es eine andere Bibliothek, die ich verwenden sollte, um in diesen Situationen 'GET', 'POST' und 'PUT' Anfragen zu stellen? – ddouglascarr