Опция async: false не работает в $ .ajax (), не рекомендуется ли в jQuery 1.8+ для всех случаев использования?
Я запутался в использовании опции async: false с $ .ajax (). Согласно документации $ .ajax ():
Начиная с jQuery 1.8, использование async: false с jqXHR ($ .Deferred) устарело; Вы должны использовать параметры обратного вызова success / error / complete вместо соответствующих методов объекта 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
{}
поставить галочку
Я делаю что-то не так или я делаю что-тонеправильно?