Вы не собираетесь делать ничего более красивого, чем код с отложенным стилем. Я настоятельно призываю вас взглянуть на обновление версии jQuery.
Этот код просто запускает один бит кода после завершения двух асинхронных битов кода. Учитывая, что они имеют одинаковую длительность, вы можете просто отложить код на это время:
self.image.fadeOut(self.options.animationSpeed);
self.aniImg.eq(0).fadeIn(self.options.animationSpeed);
setTimeout(function() {
self.finishAnimating(data);
}, self.options.animationSpeed);
Это быстрый и (немного) хакерский подход. Другой способ - запустить функцию, которая выполняет только немного кода, когда завершено правильное количество функций.
var ticks = 0;
function tick() {
if (++ticks === 2) { // number of animations
self.finishAnimating(data);
}
}
self.image.fadeOut(self.options.animationSpeed, tick);
self.aniImg.eq(0).fadeIn(self.options.animationSpeed, tick);
Это более многословно, и опять же не очень красиво, но оно более точно повторяет поведение $.when
и является более расширяемым.