golovewkin
@golovewkin
WEB - Разработчик

Как сделать асинхронную цепочку вызовов jQuery?

Всем привет.
Хочется построить цепочку, но чего то я недопонимаю
function getRegionById(idRegion) {
            $.ajax({
                url: 'http://evildevel.com/Test/Region'
            }).done(function (res) {
                var d = $.Deferred();
                res.forEach(function (item) {
                    if (idRegion === item[0]) {
                        d.resolve();
                        return d.promise(item[1]);
                    }
                })
            }).then(function(itemName){
                console.log (itemName);
            }).fail(function () {
                console.log('error in request http://evildevel.com/Test/Region');
            });
        }


По моей логике в then должен приходить itemName, но он срабатывает сразу, и приходит весь массив данных, то есть получается что then аналогичен done?
Ок, как тогда сделать цепочку вызовов?
Спасибо
  • Вопрос задан
  • 246 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
ну если вы присмотритесь к своему коду, то вы дергаете then не у своего промиса а тот который возвращает $.ajax. А документация гласит:

Incorporates the functionality of the .done() and .fail() methods, allowing (as of jQuery 1.8) the underlying Promise to be manipulated. Refer to deferred.then() for implementation details.


Так же не понятно почему вы ресолвите один и тот же промис в цикле.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы