promise( [тип,] [цель] )
.promise( [тип,] [цель] )
Метод .promise() возвращает динамически сгенерированный объект Promise, который будет решен, как только все действия определенного типа связаные со сбором, в очереди они или нет, закончились.
По умолчанию, тип равен "fx", это означает, что возвращенный объект Promise не будет решен, когда все анимации выбранных элементов выполненны.
Решением контекста и единственным аргументом является коллекция, на которую .promise() был вызван.
Если target представлен, .promise() присоединит методы на него, а затем вернет этот объект, а не создаст новый. Это может быть полезно для присоединения поведения к объекту, который уже создан.
Примечание: Возвращенный Promise связан с Отсроченным объектом, хранящимся на
.data()для элемента. Поскольку метод.remove()удаляет данные элемента также как и сам элемент, он будет припятствовать от разрешения любых объектов Promise элементов. Необходимо удалить элемент из DOM до того как объект Promise решен, используйте.detach()вместо этого и используйте.removeData()после разрешения.
Примеры
Пример 1
Использование .promise() на коллекцию без активной анимации возвращает решенный Promise:
var div = $( "<div />" );
div.promise().done(function( arg1 ) {
// will fire right away and alert "true"
alert( this === div && arg1 === div );
});
Пример 2
Решает возвращенный Promise когда все анимации законченны (в том числе начатый в анимации обратного вызова или добавленный позже):<!DOCTYPE html>
<html>
<head>
<style>
div {
height: 50px; width: 50px;
float: left; margin-right: 10px;
display: none; background-color: #090;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<button>Go</button>
<p>Ready...</p>
<div></div>
<div></div>
<div></div>
<div></div>
<script>
$("button").bind( "click", function() {
$("p").append( "Started...");
$("div").each(function( i ) {
$( this ).fadeIn().fadeOut( 1000 * (i+1) );
});
$( "div" ).promise().done(function() {
$( "p" ).append( " Finished! " );
});
});
</script>
</body>
</html>
Пример 3
Решает возвращенный Promise используя $.when() (метод .promise() делает это возможным с коллекцией jQuery):<!DOCTYPE html>
<html>
<head>
<style>
div {
height: 50px; width: 50px;
float: left; margin-right: 10px;
display: none; background-color: #090;
}
</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<button>Go</button>
<p>Ready...</p>
<div></div>
<div></div>
<div></div>
<div></div>
<script>
var effect = function() {
return $("div").fadeIn(800).delay(1200).fadeOut();
};
$("button").bind( "click", function() {
$("p").append( " Started... ");
$.when( effect() ).done(function() {
$("p").append(" Finished! ");
});
});
</script>
</body>
</html>

