Хорошие новости.Со вчерашнего дня вы можете отменить свое обещание.
Я опубликовал новую версию моего небольшого плагина jquery-timer , который предоставляет два метода среди многих других, называемых .wait () и .unwait ().
var deferred = $("#box").delay(2000).show("slow").delay(2000).promise();
$.wait(deferred, function(){ log("Done"); });
Если вы затем хотите отменить регистрацию обратного вызова:
$.unwait();
Эти статические версии wait и unwait также поддерживают необязательное имя группы, чтобы не отменять какой-либо обработчик, а только определенный набор.
Кроме того, вы можете делать намного более умные вещи, такие как:
$('#box').wait(deferred).addClass('ready');
или весь код в одной цепочке, без опции ожидания:
$("#box").delay(2000).show("slow")
.delay(2000).join(function(){log("Done");})).addClass('ready');
илито же самое еще короче с возможностью отменить две паузы:
$("#box").wait(2000).show("slow",$)
.wait(2000, function(){log("Done");})).addClass('ready');
Просто посмотрите документы, примеры и API, которые подходят вам лучше всего.