If I drop into the VSCode debugger in some javascript code and call an asynchronous function with await it just returns a promise. How can I resolve the promise within the debugger so I can see what the result is?
For example, if I define a function like so:
const doAsyncThing = async () => {
return new Promise((resolve) => {
setTimeout(() => {
resolve(5)
}, 1000)
})
}
(async function() {
const result = await doAsyncThing()
console.log(`result is ${result}`)
debugger
})()
Then this happens when I call it in the debugger:
result is 5
> result
5
> await doAsyncThing()
Promise {<pending>}
> const result2 = await doAsyncThing()
Promise {<pending>}
> result2
Uncaught ReferenceError: result2 is not defined
> doAsyncThing().then(r => console.log(r))
Promise {<pending>}
> await doAsyncThing().then(r => console.log(r))
Promise {<pending>}
How can I make it resolve the promise and get me the result within the debugger?
This is not a duplicate of How to debug async/await in visual studio code? That question appears to be asking how to place a breakpoint within an asynchronous function, while I am trying to actually execute the function from the debugger. I previously asked this question here but it was closed (incorrectly I believe) as a duplicate. I added additional context here to help clarify the difference.