$.ajax() で async: false オプションを使用することについて混乱しています。$.ajax() ドキュメントによると:
jQuery 1.8 以降、jqXHR ($.Deferred) で async: false を使用することは推奨されなくなりました。jqXHR.done() や非推奨の jqXHR.success() などの jqXHR オブジェクトの対応するメソッドの代わりに、成功/エラー/完了のコールバック オプションを使用する必要があります。
jqXHR ($.Deferred) の意味がわかりません。何らかの理由で async:false を使用していませんか、それとも jqXHR ($.Deferred) は特別な使用例ですか?
$.ajax() 呼び出しを非同期で行うのに問題があるのでお願いします。これは 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))
私のコンソール出力は次のとおりです。
トック
{}
ティック
私は何か間違ったことをしていますか、それとも何か間違ったことをしていますか?