Вы можете решить эту проблему несколькими способами, хотя все они по сути делают некоторую производную очереди.
Например:
$("#startLink").click(function(){
var $dialog = $(".dialog");
$dialog.dialog({
open: function(e, ui){
// delay any close operations for at least 2 seconds
$dialog.queue(function(){
setTimeout(function(){
$dialog.dequeue();
}, 2000);
});
// if you're using jQuery 1.4, you can do this instead
// $dialog.delay(2000);
}
});
// do some processing here
$dialog.queue(function(){
$dialog.dialog('close');
$dialog.dequeue();
});
});
В любом случае, все, что вы действительно делаете, - это обеспечивает заданную задержку, используя встроенную систему очередей. Вы также можете выполнить это без использования системы очередей, но это еще один пример.