Обещание становится разрешенным только при вызове обратного вызова resolve
. Если обещание не было разрешено или отклонено, оно остается в состоянии pending
навсегда. Ключевое слово
Await
используется для фактического «ожидания разрешения обещания», и в вашем примере это никогда не происходит.
Ваша функция test
ожидает выполнения некоторой функции по истечении времени ожидания. Когда вы передаете resolve
в качестве аргумента функции test
, она будет вызвана по истечении времени ожидания, обещание будет выполнено и вы увидите журналы консоли.
Я не уверен, к какому результату вы пытаетесьдостичь, но вот короткий фрагмент кода, показывающий реализацию функции 2 секунды sleep
:
function sleepTwoSeconds() {
return new Promise(resolve => setTimeout(resolve, 2000))
}
async function run() {
console.log('start');
await sleepTwoSeconds();
console.log('2 seconds passed');
}
run()