Опция 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
{}
поставить галочку

Я делаю что-то не так или я делаю что-тонеправильно?

Ответы на вопрос(3)

Ваш ответ на вопрос