Using an await in function parameter
I do it all the time. However in case if you want to pass more than one parameter to function they will be resolved sequentially. To fight that problem I wrote an util function which looks like that:
async function call(func, ...args) {
return func(...await Promise.all(args));
}
(async function() {
console.log(await call(functionToCall, delay(2000), delay(2000)));
})();
With that syntax functionToCall will be called in 2 seconds instead of 4
Yes, this will work, as you can use the await
keyword everywhere where you can use an expression.
However, I'd prefer a slightly updated version of your code for better readability (and for better debugability, too):
const run = async () => {
const studentId = await getStudentId();
getStudentDetails(studentId);
}
I hope this helps ð
Yes, you can use await
expressions in every arbitrary context (where it parses) inside the async function
, including as arguments to function calls. There's nothing wrong with it.
It's equivalent to
const run = async () => {
const studentId = await getStudentId();
getStudentDetails(studentId);
}