2012-07-10 31 views
3

在我正在處理的現有Backbone/jQuery/CoffeeScript應用程序中,似乎有一個函數(Backbone.Collection.fetch())被稱爲多次(有時編號可能會有所不同)。我認爲這可能是一個計時的事情,因爲我正在做很多嵌套的回調(比如AJAX等),並且它變得很難調試。我應該嘗試轉換代碼以使用jQuery延遲,但同時,我該怎麼做?JavaScript中的調試技巧。異步回調

剛試過在Chrome瀏覽器中的代碼,但它看起來代碼在這裏和那裏跳躍,也許它在同一時間處理不同的回調?

我在想也許我添加一個console.log到每個函數+它的參數,但是必須有更好的方法嗎?

+0

您是否嘗試過使用Firefox和Firebug?在某些方面,Firebug優於Chrome提供的內容。 – jjathman 2012-07-10 01:56:23

回答

2

您可以將堆棧軌跡添加到該函數,並查看它從哪裏調用。 JS有很多體面的堆棧跟蹤實現。我與 Eric Wendelin's version取得了很好的成功,但有plenty of others

使用堆棧跟蹤,或許您至少可以看到該功能中最常用的路徑,這可能有助於縮小搜索範圍。它甚至可以明確潛在的罪魁禍首。

+0

只需在功能代碼中添加'debugger;'。這將導致檢查員暫停。 – 2012-07-10 05:43:02

+0

聽起來好像有太多的調用只是簡單的調試。許多可以分析的堆棧可能會告訴通過調試器無法看到的東西。 – 2012-07-10 10:59:10