У меня есть следующий код Coffeescript:
# Coffeescript
setMessage = (message, options = {}) ->
t = statusArea.text(message)
if options['fade']
t.addClass('yellow')
t.fadeOut 4000, ->
$(this).removeClass 'yellow'
// Javascript
setMessage = function(message, options) {
var t;
if (options == null) options = {};
t = statusArea.text(message);
if (options['fade']) {
t.addClass('yellow');
return t.fadeOut(4000, function() {
return $(this).removeClass('yellow');
});
}
};
, который предназначен для отображения сообщения о состоянии внутри элемента LI. Если options['fade']
установлен на что-либо, тогда я вызываю исчезающие вещи. Первое, что происходит в моем программном потоке, это то, что я выполняю Ajax-вызов, чтобы заполнить SELECT и отправить сообщение «выполнение удаленного вызова» с постепенным исчезновением (то есть с options['fade']
, установленным на true
), в область состояния. Это может быть почти мгновенным или может занять некоторое время. Это зависит от размера результата и сетевого трафика. Как только SELECT заполняется, я отправляю «готовое» сообщение без затухания.
Проблема возникает, когда ответ почти мгновенный. В этом случае текст заменяется на «готово», но анимация продолжается, исчезая сообщение (т.е. исчезает элемент LI).
Есть ли приемлемый способ прервать предыдущий переход, если он есть, перед началом другого?