Цепочка промисов (разница между .animate и setTimeout) ⇐ Jquery
-
Гость
Цепочка промисов (разница между .animate и setTimeout)
Я хочу спросить, как именно работают промисы в JavaScript. Мне трудно понять разницу между выполнением цепочки, состоящей из jQuery.animate и setTimeout.
Если я сделаю что-то вроде этого:
var обещание = новое обещание (функция (разрешить, отклонить) { решать( $("#что-то").animate({ ширина: 100 }, 1000); ) }); обещание.тогда(функция(данные) { $("#что-то").animate({ высота: 100 }, 1000); }); Тогда вторая анимация начинается после завершения первой (что и является желаемым поведением). С другой стороны, когда я меняю .then (заменяю .animate), например, setTimeout то он выполняется сразу после запуска анимации (он не ждет окончания анимации).
promise.then(function(data) { setTimeout(функция() { console.log("Начался тайм-аут"); }, 1000); }); Итак, мой вопрос: почему первый сценарий работает нормально, а второй нет? Я думал, что асинхронные задачи решаются таким же образом. И как мне изменить код, чтобы правильно связать любые функции (чтобы дождаться выполнения предыдущих).
Я хочу спросить, как именно работают промисы в JavaScript. Мне трудно понять разницу между выполнением цепочки, состоящей из jQuery.animate и setTimeout.
Если я сделаю что-то вроде этого:
var обещание = новое обещание (функция (разрешить, отклонить) { решать( $("#что-то").animate({ ширина: 100 }, 1000); ) }); обещание.тогда(функция(данные) { $("#что-то").animate({ высота: 100 }, 1000); }); Тогда вторая анимация начинается после завершения первой (что и является желаемым поведением). С другой стороны, когда я меняю .then (заменяю .animate), например, setTimeout то он выполняется сразу после запуска анимации (он не ждет окончания анимации).
promise.then(function(data) { setTimeout(функция() { console.log("Начался тайм-аут"); }, 1000); }); Итак, мой вопрос: почему первый сценарий работает нормально, а второй нет? Я думал, что асинхронные задачи решаются таким же образом. И как мне изменить код, чтобы правильно связать любые функции (чтобы дождаться выполнения предыдущих).
Мобильная версия