0
當使用像Visual Studio代碼中的Node.js調試then
承諾回調,調用堆棧似乎是多餘的。不是從邏輯角度提供實際調用我的代碼的函數,它提供了從字面角度調用我的代碼的函數;藍鳥庫(或者Q庫)的功能。我真正想看到的是之前執行的承諾函數,或承諾鏈的「發起者」。從我關心的程序流程的邏輯角度來看。有沒有辦法在調試過程中獲得這些信息?如何獲得Promise的「啓動器」調試信息?
當使用像Visual Studio代碼中的Node.js調試then
承諾回調,調用堆棧似乎是多餘的。不是從邏輯角度提供實際調用我的代碼的函數,它提供了從字面角度調用我的代碼的函數;藍鳥庫(或者Q庫)的功能。我真正想看到的是之前執行的承諾函數,或承諾鏈的「發起者」。從我關心的程序流程的邏輯角度來看。有沒有辦法在調試過程中獲得這些信息?如何獲得Promise的「啓動器」調試信息?
只是讓你意識到,你要問的是不是實際調用堆棧。根據承諾規範,當調用處理程序時,調用棧將清除所有代碼 - 這就是異步處理程序所發生的情況。
這麼說,我知道你想看到(異步流堆棧或類似的東西)的東西,但我不知道有任何工具,將提供的。該Bluebird promise library有給你,這可能是有關您的問題
只要你實現遠程堆棧跟蹤,什麼你問是不是實際調用堆棧的手段。根據承諾規範,調用'.then()'處理函數時,調用堆棧將清除所有代碼 - 異步處理程序會發生這種情況。這就是說,我明白你想看到什麼(異步流棧或類似的東西),但我不知道任何工具,將提供。 [藍鳥許諾庫](http://bluebirdjs.com/docs/api/promise.longstacktraces.html)有一種方法可以爲您提供可能與您的問題相關的長堆棧跟蹤。 – jfriend00
好主意。我發佈了一個答案。 – jfriend00
使用Google Chrome DevTools進行調試時,您已經支持「異步」調用堆棧。它可以是在方法是一些庫中的堆棧,它可以跳過使用[黑箱特徵]的存在下(如'Bluebird')(https://developer.chrome.com/devtools/docs/blackboxing) 。在VSCode中,有一個類似的特性叫做''skipFiles'](https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_launch-configuration-attributes),你必須在'launch.json'文件中設置。 – MarcoL