在VS Code" Debug Console"中,我可以在调试JavaScript代码时调试代码中的表达式,包括运行我的函数。但是,即使我使用IIFE等,我似乎无法运行async
函数。
我有以下代码:
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 Debugger。然后我尝试在调试控制台中以不同的方式运行getUrl
函数,例如getUrl()
,getUrl().then((data) => data)
和(async () => getUrl())()
,它们都返回Promise { pending }
) 。 main()
返回相同的内容(如果在函数定义后运行)。这些方法都不会打印函数的返回值。
我还尝试了await getUrl()
,它返回SyntaxError: await is only valid in async function
。
我知道如果真的有必要,我可以在console.log
的代码中输出我想要的函数,但是我正在寻找一种专门使用Debug Console来打印promises结果的解决方案使用await
函数创建。
因此,当函数为async
时,是否有任何方法可以在VS Code Debug Console中输出函数的结果?
答案 0 :(得分:0)
VS Code 调试控制台支持顶级异步/等待 (https://github.com/microsoft/vscode-js-debug#top-level-await),但问题可能是您在断点处暂停。
<块引用>如果你在断点上暂停时使用 await,你只会得到一个挂起的 Promise。这是因为 JavaScript 事件循环在断点处暂停。