I have two functions a
and b
that are asynchronous, the former without await
and the later with await
. They both log some
Everything is synchronous until a Javascript asynchronous function is executed. In using async-await await
is asynchronous and everything after await is placed in event queue. Similar to .then()
.
To better explain take this example:
function main() {
return new Promise( resolve => {
console.log(3);
resolve(4);
console.log(5);
});
}
async function f(){
console.log(2);
let r = await main();
console.log(r);
}
console.log(1);
f();
console.log(6);
As await
is asynchronous and rest all is synchronous including promise thus output is
1
2
3
5
6
// Async happened, await for main()
4
Similar behavior of main()
is without promise too:
function main() {
console.log(3);
return 4;
}
async function f(){
console.log(2);
let r = await main();
console.log(r);
}
console.log(1);
f();
console.log(5);
Output:
1
2
3
5
// Asynchronous happened, await for main()
4
Just removing await
will make whole async
function synchronous which it is.
function main() {
console.log(3);
return 4;
}
async function f(){
console.log(2);
let r = main();
console.log(r);
}
console.log(1);
f();
console.log(5);
Output:
1
2
3
4
5