Допустим, у меня есть следующий код в пустом контроллере AngularJS:
Promise.all([Promise.resolve()]).then(() => console.log('Then'));
setTimeout(() => console.log('setTimeout callback'));
Я ожидаю:
Promise.all.then
будет помещено в цикл обработки событий. setTimeout
обратный вызов будет помещен в цикл обработки событий.
Мы не делаем длинных запросов и должен быть следующий вывод:
Then
setTimeout callback
И это работает.
Но если мы заменим Promise.resolve()
на $q.resolve()
:
Promise.all([$q.resolve()]).then(() => console.log('Then'));
setTimeout(() => console.log('setTimeout callback'));
, результат будет другим:
setTimeout callback
Then
Вот плагин: https://embed.plnkr.co/0h0i4CzuSgqMbYQtxZtU/
Почему выход отличается?Как $q.resolve
влияет на вывод?