description |
---|
Метод $.when() |
Теперь на примере нашей подопытной странички покажу хитрый метод $.when()
:
$.when(
$("article h3").hide(3000),
$("article img").slideUp(1000),
$("article p").fadeTo(2000, 0.1)
).then(() =>
$("article").slideUp(500)
).done(() =>
console.info("done")
).catch(() =>
console.error("fail :(")
)
Поясню происходящее – все анимации стартуют одновременно, и когда все завершат свою работу будет вызвана функция, которую мы передаём в качестве аргумента в метод then()
(одна из двух, в зависимости от исхода происходящего).
Для обеспечения работы этой «магии» методы $.when()
, $.ajax()
и animate()
реализуют интерфейс Deferred. Поэтому мы можем использовать все те методы, с которыми знакомились в предыдущей главе.
{% hint style="info" %}
Теперь можно и заумно – метод when()
возвращает проекцию Deferred объекта, принимает в качестве параметров произвольное множество Deferred объектов, когда все они отработают, объект when
изменит своё состояние в «выполнено», с последующим вызовом всех подписавшихся.
{% endhint %}
{% embed url="https://anton.shevchuk.name/book/code/when.html" %}