Почему этот код останавливается посередине?
async function main () {
await new Promise(() => {
console.info('Hello world')
})
console.info('debug1')
await new Promise(r => setTimeout(r, 1000));
console.info('finish')
}
main()Этот код печатает только «Hello world», но не «debug1» или «finish», почему?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы не выполнили первое обещание, поэтому код завис в ожидании разрешения обещания. Чтобы это исправить, разрешите обещание следующим образом:
async function main () {
await new Promise(resolve => {
console.info('Hello world');
resolve();
})
console.info('debug1')
await new Promise(r => setTimeout(r, 1000));
console.info('finish')
}
main()Но смогу ли я вернуть некоторую решимость — это второе обещание? @ЭндрюПаркс
@Xmajkl да, ваше второе обещание примерно эквивалентно коду: await new Promise(resolve => setTimeout(() => resolve(), 1000));, что означает, что решение вызывается через 1 секунду.
Промис принимает функцию как минимум с одним, но в идеале с двумя аргументами: функцию обратного вызова
resolveв качестве первого аргумента и функцию обратного вызоваrejectв качестве второго аргумента. Вы не дали ни того, ни другого своего первого обещания, и поэтому оно никогда не будет выполнено.