【发布时间】:2015-12-02 07:11:02
【问题描述】:
我正在使用 Koa 框架在 Node JS 中开发一个 webapp。
所有的流控制都是通过生成器完成的,而不是回调。代码看起来是连续的,但实际流程不是。无论如何,它看起来比回调地狱要干净得多。
这是一个用 koa 编写的控制器函数的简单示例:
function *findUserById(userId)
{
var user = yield getUserOrError404(userId);
yield loadAdditionalData(user);
yield data.users.save(user);
return user;
}
但是有一个困难:在我的 IDE (IntelliJ IDEA) 中使用 yields 单步执行代码效果不佳。一旦执行与yield 语句一致,如果我只是“跳过”,则执行流程会向上堆栈到 koa 代码(这并不是 IDE 的错,因为它只是遵循实际的执行流程生成器、yield 语句和 Node 事件循环)。
目前我必须为下一条我希望调试器暂停的语句设置断点,通常是下一行,然后单击“恢复程序”按钮。
当有超过 2-3 个 yield 语句时,它会变得乏味。
是否有更好的方法(技巧、插件、...)来单步执行大量生成器的 JS 代码,允许单步执行 yield 语句,就好像它是“正常”的顺序语句一样?
【问题讨论】:
标签: javascript node.js debugging intellij-idea generator