Не проверено, но попробуйте это:
unload: function() {
var items = this.element.children('.nw-item').reverse();
var self = this;
var udfd = $.Deferred();
var chain;
$.each(items, function() {
chain = udfd.pipe(function() {
return $.Deferred(function(deferred) {
div.slideUp(self.options.speed, function() {
// callback function gets executed when slideUp is done
deferred.resolve();
});
}).promise();
});
});
chain.done(function() {
udfd.resolve();
});
return udfd.promise();
}
Поскольку ваша функция jQuery.slideUp является асинхронной, НО не возвращает отложенный объект, такой как, например, jQuery.ajax, вы должны вручную вернуть отложенное / обещание.Когда ваша цепочка переданных функций завершена, она решает основную задержку.Не забудьте вернуть обещание для основного Отложенного.
Как я уже сказал, гарантии нет, но вы можете попробовать!