Pull to refresh

Comments 16

Отличная статья, теперь понятно где применить.
в конце $.wen() — кажется ошибочка закралась
Спасибо тем, кто заметил и сообщил, — исправил.
Наконец-то они это сделали и, за счёт популярности, унифицировали-стандартизировали.
Больше не придётся изобретать велосипеды :)
смахивает на питонячий Twisted. Не просто смахивает, а один к одному относится. Насколько понимаю, концепцию оттуда и позаимствовали?
ну это-то да, это — славно и все равно.

Только проект CommonJS начался в начале 2009 года, а Twisted — в 2002. Интересно все же, где именно родилась концепция цепочек callback и errback.
кто не положил в закладки — тот нуб
Цепочки вызова выглядят, примерно, так: $.ajax(options).done(function() { }).done(function() { }).fail(function() { });

Это как при работе с DOM элементами: $('div').attr('title', 'test').css('color', 'red').text('123');
Это да, но я про другие цепочки. Хотелось бы вдобавок видеть что-то вида:

ajax1 -> (ajax2, fadeOut, static1) -> ajax3 -> (static2, ajax4) ->…

Т.е. выстраивать такие вот очереди (тем же .then, без помощи $.when). По-идее это должно входить в Deferred. А сейчас оно получается так же неудобно, как и раньше.
А синтаксически корректный пример, как с then это может быть удобнее, можно привести?
Что-то вроде:
$.get('/ajax/1/') 
.done(function(){
    console.log('ajax 1 success'); // пока мы в контексте первого ajax-вызова
})
.then(function(){
    return $.get('/ajax/2/'); // но как только один из слушателей возвращает promise ...
})
.done(function(){
    console.log('ajax 2 success'); // ... контекст меняется
})


Как-то так. О чем-то таком уже писали на Хабре и вроде как оно реализовано в dojo.Deferred объекте. Вот мне и интересно, есть ли такое в jQuery?

Возможно, разработчики jQuery просто не успели это сделать к выходу. Или же просто я этого не нашёл
… или ввести бы для $.Deferred свой метод .when:
$.get('/ajax/1/')
.done(...)
.fail(...)
.when(
    function(){
        return $.get('/ajax/2/');
    },
    function(){
        var d = $.Deferred();
        $('#id').fadeOut(d.resolve);
        return d.promise();
    }
)
.done(...)
.fail(...)
Интересное предложение. Да, в jquery.Deferred сейчас возврат из «слушателей» никак не учитывается. Думаю, разработчики сделали выбор в пользу простоты реализации, опустив некоторые фичи.

Надо будет на досуге подумать, что тут можно сделать, кроме вложенных функций.
Only those users with full accounts are able to leave comments. Log in, please.

Articles