I want to know actual meaning of async keyword usage before function name in node js.
CodePudding user response:
Node.js is asynchronous in the idea that code does not need to run in the order it was called. However, you have to tell Node to do that for you.
Defining a function as async
means that the function will return a Promise
that resolves to whatever the return of the function is:
// This function returns a `Promise` that resolves to `true`
const func = async () => {
return true;
}
Importantly, defining a function as async
also allows the use of the await
keyword:
const func = async () => {
const result = await fetch("someUrl");
return await result.toJSON();
}
async
/await
is just syntactic sugar for traditional Promises:
// This is the same function as above
const func = () => {
return fetch("someUrl")
.then(result => result.toJSON())
}
CodePudding user response:
An async
function will ALWAYS return a promise
. If it returns a non-promise, the return value will be wrapped in Promise.resolve
. If it throws, it will wrap the exception in Promise.reject
.
So the async
keyword is a contract that guarantees the return value of the function to be asynchronus.
And this is required for the await
keyword, because you can only await
if you return a promise
.