I\'m trying to return an async function but I either get promise: < { PENDING } >
or [object Promise]
instead of [object Object]
I solved this by adding an await to the top level getNext()
aka
const next = await getNext({
page,
value,
name,
id,
});
which is inside an async router.post
call. So the answer is: make sure all functions are async all the way to the top so that they wait for eachother.
You cannot make asynchronous code synchronous.
The await
keyword lets you write code that looks synchronous, but is really asynchronous.
You can only use await
inside a function which is async
.
To make await
work, all async
functions return promises. Those promises resolve to be the return value of the function.
In short: You have the normal and expected behaviour, and you can't prevent an async
function from returning a promise.