Skip to content

Latest commit

 

History

History
31 lines (24 loc) · 1.76 KB

File metadata and controls

31 lines (24 loc) · 1.76 KB
description
Метод $.when()

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" %}