在 VS Code“调试控制台”中,我可以在调试我的 JavaScript 代码(包括运行我的函数)时在调试 session 的中间评估我的代码上的表达式。但是,我似乎无法运行 async
功能,即使我使用 IIFE 等。
我有以下代码:
const axios = require('axios');
async function getUrl() {
const response = await axios.get('http://example.com/');
return response.data;
}
async function main() {
const response = await getUrl();
console.log(response);
}
main();
我在
async function main() {
上设置了一个断点行,然后我运行 VS Code 调试器。然后我尝试运行 getUrl
在调试控制台中以不同方式运行,例如 getUrl()
, getUrl().then((data) => data)
, 和 (async () => getUrl())()
, 所有返回 Promise { pending }
)。 main()
返回相同(如果在函数定义之后运行)。这些方法都没有打印函数的返回值。我也试过
await getUrl()
,返回 SyntaxError: await is only valid in async function
.我知道我可以在代码中输出我想要的函数
console.log
,如果真的有必要,但我正在寻找一种解决方案,它专门使用调试控制台来打印专门使用 await
创建的 promise 的结果功能。因此,当函数为
async
时,真的有什么方法可以在VS Code Debug Console中输出函数的结果吗? ?
最佳答案
VS Code 调试控制台支持顶级异步/等待( https://github.com/microsoft/vscode-js-debug#top-level-await )但是问题可能是您在断点处暂停。
if you use await while paused on a breakpoint, you'll only get a pending Promise back. This is because the JavaScript event loop is paused while on a breakpoint.
关于javascript - 在 VS Code "Debug Console"中,运行 JavaScript 等待函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50547070/