如何通过 promises 单步执行调试器
how to step through debugger with promises
我在我的节点代码中使用 bluebird promises,并经常使用调试器单步执行代码。但是,使用 promises,我发现我无法像以前那样逐步完成。我必须像下面评论的那样添加断点。
var promise = doSomethingAndReturnPromise1(stuff);
promise.then(function(stuff) {
return doSomethingAndReturnPromise2(stuff) /* add brk pt */
}).then(function(user) {
return doSomethingAndReturnPromise3(stuff) /* add brk pt */
}).catch(function(err) {
// handle err /* add brk pt */
}
我记得在使用 async
时,我能够在不添加额外断点的情况下单步执行,或者可以设置断点并更容易地从堆栈中分辨出之前发生的事情。有没有办法在蓝鸟或任何承诺库中启用它?
以下是逐步执行 bluebird 承诺的方法:
- 通过打开
Promise.longStackTraces()
或以其他方式将 bluebird 置于调试模式(通过设置环境变量 BLUEBIRD_DEBUG=1
)来关闭批处理蹦床。
- 通过打开开发人员工具打开异步堆栈跟踪,转到 "Sources" 选项卡并单击 "Async"。
- 调试。
我在我的节点代码中使用 bluebird promises,并经常使用调试器单步执行代码。但是,使用 promises,我发现我无法像以前那样逐步完成。我必须像下面评论的那样添加断点。
var promise = doSomethingAndReturnPromise1(stuff);
promise.then(function(stuff) {
return doSomethingAndReturnPromise2(stuff) /* add brk pt */
}).then(function(user) {
return doSomethingAndReturnPromise3(stuff) /* add brk pt */
}).catch(function(err) {
// handle err /* add brk pt */
}
我记得在使用 async
时,我能够在不添加额外断点的情况下单步执行,或者可以设置断点并更容易地从堆栈中分辨出之前发生的事情。有没有办法在蓝鸟或任何承诺库中启用它?
以下是逐步执行 bluebird 承诺的方法:
- 通过打开
Promise.longStackTraces()
或以其他方式将 bluebird 置于调试模式(通过设置环境变量BLUEBIRD_DEBUG=1
)来关闭批处理蹦床。 - 通过打开开发人员工具打开异步堆栈跟踪,转到 "Sources" 选项卡并单击 "Async"。
- 调试。