Цепочка промисов (разница между .animate и setTimeout)Jquery

Программирование на 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); }); Итак, мой вопрос: почему первый сценарий работает нормально, а второй нет? Я думал, что асинхронные задачи решаются таким же образом. И как мне изменить код, чтобы правильно связать любые функции (чтобы дождаться выполнения предыдущих).
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Jquery»