2012-07-10 29 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