我对在 $.ajax() 中使用 async: false 选项感到困惑。根据 $.ajax() 文档:
从 jQuery 1.8 开始,不推荐在 jqXHR ($.Deferred) 中使用 async: false ;您必须使用成功/错误/完成回调选项而不是 jqXHR 对象的相应方法,例如 jqXHR.done() 或已弃用的 jqXHR.success()。
我不知道 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))
我的控制台输出是:
tock
{}
滴答声
我做错了什么,还是我做错了什么?