How to call async functions from VSCode debugger?

梦想与她 提交于 2020-12-15 04:58:45

问题


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.

来源:https://stackoverflow.com/questions/65095418/how-to-call-async-functions-from-vscode-debugger

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!