Gar*_*ary 12 javascript debugging asynchronous promise visual-studio-code
在 VS Code 的“调试控制台”中,我可以在调试 JavaScript 代码(包括运行我的函数)时在调试会话中间评估我的代码上的表达式。但是,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();
Run Code Online (Sandbox Code Playgroud)
我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,如果真的有必要,但我正在寻找一种解决方案,专门使用调试控制台来打印专门使用await函数创建的承诺的结果。
因此,当函数为 时,是否真的有任何方法可以在 VS Code 调试控制台中输出函数的结果async?
And*_*cik 19
VS Code 调试控制台支持顶级异步/等待(https://github.com/microsoft/vscode-js-debug#top-level-await),但问题可能是您在断点处暂停。
如果你在断点处暂停时使用await,你只会得到一个待处理的Promise。这是因为 JavaScript 事件循环在断点处暂停。
hun*_*aro 13
@jonas-wilms 在对原始问题的评论中有正确的想法。
@andrej-k 有一个很好的观点,即事件循环已暂停。
async将它们放在一起,以下是在 VS Code 调试控制台中的断点处暂停时从函数获取输出的方法:
// config.entry() is an async function
config.entry().then((result) => { debugger; })
Run Code Online (Sandbox Code Playgroud)
config.entry是一个异步函数.then()有debugger;result在.then()回调中转储| 归档时间: |
|
| 查看次数: |
3686 次 |
| 最近记录: |