![](/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.