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?
Ок, как тогда сделать цепочку вызовов?
Спасибо
  • Вопрос задан
  • 250 просмотров
Решения вопроса 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.


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

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект