Оба примера возвращают Promise
, но есть ключевое различие, которое ищет механизм сценариев ... Есть ли что-то асинхронное в ожидании? В первом примере нет, но во втором примере код по крайней мере говорит, что есть. (Хотя я мог бы ожидать, что любая достойная IDE будет жаловаться на это, поскольку строковый литерал не является асинхронной операцией. Однако сам язык может быть довольно прощающим.)
Даже если вы выполняете асинхронную операцию в первом примере, если вы не ожидаете этого, окружающий код все равно будет работать синхронно. Вы просто не сможете наблюдать результат (или неудачу) этой операции. (Ну, вы можете добавить .then()
к нему, но тогда зачем использовать async
? В этот момент вы будете смешивать свои асинхронные соглашения.)
Если вы звоните getData()
внутри async
функция, то вы можете ждать ее:
console.log(1);
await getData();
console.log(2);
Или, альтернативно, вы можете продолжить с возвращенного обещания:
console.log(1);
getData().then(() => console.log(2));
Или, более многословно (или для любого, кто застрял в IE):
console.log(1);
getData().then(function () {
console.log(2);
});