Проблема в том, что нет способа узнать, когда ваш код готов.Если вы измените первую функцию на что-то вроде следующего, она должна работать:
const first = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(1);
resolve();
},2000);
});
}
По сути, это возвращает обещание, которое разрешится после истечения времени ожидания.Таким образом, ваш await
будет ожидать вызова функции resolve
.
Вы также можете сделать что-то вроде следующего, чтобы преобразовать setTimeout в обещание.
const timeout = (ms) => {
return new Promise((resolve, reject) => {
setTimeout(() => resolve(), ms);
});
}
const first = async () => {
await timeout(2000);
console.log(1);
}
Но самое большоепроблема в том, что вы пытаетесь объединить обратные вызовы и обещания (await
).Поэтому в какой-то момент вы должны преобразовать этот обратный вызов (setTimeout) в обещание, чтобы вы могли await
it.