Проблема в том, что pipe()
вызывается только для следующего звена в цепочке после того, как его Deferred
было разрешено. Но вы используете pipe()
как самое первое. Его не вызывают, потому что он ждет решения, прежде чем идти по трубе.
У меня была та же проблема, пытаясь понять эти вещи. Полагаю, это немного нелогично, в зависимости от того, как вы подходите к этому, но вам нужно resolve()
ваш dfr
, прежде чем вызывать pipe Код тогда работает для меня. Вот изменение:
function animation() {
return $.Deferred(function(dfr) {
dfr.resolve();
dfr.pipe(function() {
...