JavaScript中的调试技术。异步回调

JavaScript中的调试技术。异步回调,javascript,jquery,debugging,asynchronous,coffeescript,Javascript,Jquery,Debugging,Asynchronous,Coffeescript,在我正在使用的现有主干/jQuery/CoffeeScript应用程序中,似乎有一个函数(Backbone.Collection.fetch())被多次调用(有时调用的次数可能会有所不同)。我认为这可能是一个时间问题,因为我正在进行大量嵌套回调(如AJAX等),调试变得越来越困难。我可能应该尝试将代码转换为使用jquerydeliver,但与此同时,我能做些什么呢 刚刚试着在Chrome中浏览代码,但是代码似乎在这里和那里跳跃,也许它同时处理不同的回调 我在想,也许我可以为每个函数及其参数添加一

在我正在使用的现有主干/jQuery/CoffeeScript应用程序中,似乎有一个函数(
Backbone.Collection.fetch()
)被多次调用(有时调用的次数可能会有所不同)。我认为这可能是一个时间问题,因为我正在进行大量嵌套回调(如AJAX等),调试变得越来越困难。我可能应该尝试将代码转换为使用jquerydeliver,但与此同时,我能做些什么呢

刚刚试着在Chrome中浏览代码,但是代码似乎在这里和那里跳跃,也许它同时处理不同的回调


我在想,也许我可以为每个函数及其参数添加一个console.log,但一定有更好的方法吗

您可以向该
fetch()
函数添加堆栈跟踪,并查看从何处调用它。JS有很多不错的堆栈跟踪实现。我在这方面很成功 ,但有


通过堆栈跟踪,您至少可以看到该函数中最常见的路径,这可能有助于缩小搜索范围。它甚至可以明确潜在的罪魁祸首。

您是否尝试过使用Firefox和Firebug?在某些方面Firebug优于Chrome提供的功能在函数代码内。这将导致检查器在该点暂停。听起来好像有太多的调用需要简单地调试。许多可以分析的堆栈可能会告诉您一些无法通过调试器看到的信息。