Многие JavaScript
разработчики знают о async/await
и их преимуществах, поэтому я пытаюсь протестировать старый пример асинхронного действия, давайте посмотрим на мой эксперимент:
Несомненно ответ ниже кода:
/*Line: 1*/ console.log(`1`);
/*Line: 2*/ console.log(`2`);
/*Line: 3*/ console.log(`3`);
//==> 123
Итак, я хочу поставить setTimeout
для второй строки:
/*Line: 1*/ console.log(`1`);
/*Line: 2*/ setTimeout(() => {
console.log(`2`);
}, 0);
/*Line: 3*/ console.log(`3`);
//==> 132
Из-за асинхронного действия второй строки 2
идет после 13
, поэтому в консоли отображается 132
.
Я решил использовать функцию async/await
нового JavaScript
, чтобы снова увидеть 123
, поэтому я написал приведенный выше код так:
(async () => {
console.log(`1`);
await setTimeout(() => {
console.log(`2`);
}, 0);
console.log(`3`);
})();
Но это не работает, и я снова увидел 132
в своей консоли. Какую часть я сделал неправильно или я не знаю об этом?