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. Поэтому мы можем использовать все те методы, с которыми знакомились в предыдущей главе.

Теперь можно и заумно – метод when() возвращает проекцию Deferred объекта, принимает в качестве параметров произвольное множество Deferred объектов, когда все они отработают, объект when изменит своё состояние в «выполнено», с последующим вызовом всех подписавшихся.

Last updated