javascript - 在 VS Code "Debug Console"中,运行 JavaScript 等待函数

标签 javascript debugging asynchronous promise visual-studio-code

在 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/

相关文章:

javascript - 循环遍历对象并选择最后一个对象

java - 无法在 IntelliJ 中调试 Web 服务代码

PHP 错误行号完全关闭

javascript - 如何用类比来解释 JavaScript 的单线程特性?

javascript - 下载pdf.js中base64生成的pdf

javascript - tinymce setcontent 使现有消失

2台机器上的Java调试

javascript - 如何同步运行嵌套循环?

java - Android - 异步网络调用 - 相互依赖的响应

联系人字段的 Javascript 验证