Нет, async
+ await
- это просто синтаксический сахар для цепочки обещаний, поэтому, если вы ничего не делаете await
, вы все равно выполняете синхронно.
Например, возьмите функцию:
async function foo() {
const users = await database.users.list();
const pets = await database.pets.findFor(users);
console.log("These are the application's users: ", users);
console.log("And all their pets: ", pets);
}
Он скомпилирован в основном так:
function foo() {
return new Promise(function(resolve, reject) {
try {
var users;
var pets;
database.users.list()
.then(function (us) {
users = us;
return database.pets.findFor(users);
})
.then(function (ps) {
pets = ps;
console.log("These are the application's users: ", users);
console.log("And all their pets: ", pets);
})
.then(resolve, reject);
} catch (error) {
reject(error);
}
});
}
И если вы посмотрите на документацию для конструктора Promise
, вы увидите, что исполнитель (функция, которую вы ему даете) выполняется немедленно (то есть синхронно).
Итак, вернемся к вашему примеру, ваша «асинхронная» функция будет реализована так, как показано ниже:
function funcA() {
return new Promise(function (resolve, reject) {
try {
console.log("executing funcA");
} catch (error) {
reject(error);
}
});
}
Итак, console.log
будет выполняться синхронно.