![](/img/trans.png)
[英]Why don't you let me delete the item in my code with Node.js and Express?
[英]Node.js stacktraces don't include user code
您似乎正在查看异步堆栈跟踪,其中您的代码不在堆栈中,除了回调,因为您的代码已解除/完成,然后调用了异步回调。
所有promises的所有.then()
处理程序都与一个干净的堆栈异步调用。 这是承诺规范。 所以,promises总是让当前的执行线程完成并解除,然后在调用回调时它们会.then()
处理程序,而堆栈上没有用户代码。 您所描述的是同步代码如何工作,而不是异步代码。 如果您展示实际代码并描述您正在查看调用堆栈的位置,我们可以更具体地讨论,而不是理论上。
通常必须使用日志记录跟踪异步进度,因为您无法轻松地逐步执行它,您也不能只是打破并查看堆栈跟踪。
作为一个更简单的例子来看:
function foo() {
setTimeout(() => {
console.log("timer"); // set breakpoint here
}, 100);
}
foo();
函数foo()
已经完成执行并在调用回调之前返回,因此堆栈跟踪将不会包含任何代码(除了回调之外)。
虽然.then()
处理程序使用的调度程序与setTimeout()
略有不同,但原理是相同的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.