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

时间:2018-05-26 21:18:05

标签: javascript debugging asynchronous promise visual-studio-code

在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中输出函数的结果?

1 个答案:

答案 0 :(得分:0)

VS Code 调试控制台支持顶级异步/等待 (https://github.com/microsoft/vscode-js-debug#top-level-await),但问题可能是您在断点处暂停。

<块引用>

如果你在断点上暂停时使用 await,你只会得到一个挂起的 Promise。这是因为 JavaScript 事件循环在断点处暂停。