Tag: race condition

AJAX GET竞争条件?

我试图通过类似于以下方法在我的网站上点击链接时跟踪事件。 Example jQuery(function($) { // track clicks on all anchor tags that require it $(‘a.track’).live(‘click’, function(e) { // send an AJAX request to our event tracking URL for the server to track it $.get(‘/events/track’, { url: $(this).attr(‘href’), text: $(this).text() }); }); }); 我遇到的问题是新页面加载会中断AJAX请求,因此有时这些事件不会被跟踪。 我知道谷歌分析有一个_trackPageviewfunction,可以附加到onclick事件,但这似乎不是一个问题。 我想知道他们的电话与我的看法有什么不同,我看到这种竞争条件,GA不是。 例如: Example 请注意,我并不担心AJAX请求的结果……我只是想让它以发生事件的事实来ping服务器。 (另外,我希望我能得到至少一个答案,说明只是从服务器端跟踪新的页面加载,而不是客户端。这对于这个问题不是一个可接受的答案。我正在寻找类似于无论是否加载新页面,Google Analytics的trackPageview函数都可以处理锚标记的点击事件。)

延迟jquery的计时问题

这个问题是经过精心提炼的非异步函数版本, 作为jQuery Deferred执行 。 我们有2个jsfiddles: http://jsfiddle.net/XSDVX/1/ – 尽管调用了notify()函数,但不会触发progress事件。 http://jsfiddle.net/UXSbw/1/ – 这里按预期触发进度事件。 唯一的区别是一行代码: setTimeout(dfd.resolve,1); 与 dfd.resolve(); 问题是: 当我们延迟解决时,如何捕获在此回调返回之前调用的.notify? 想一想。 .then获取从它的第一个参数返回的延迟对象,并从中创建一个新的延迟对象,绑定到它完成的进度和失败事件。 如果在返回deferred之前调用了notify,那么即使使用setTimeout,它是如何捕获它的? (感谢https://stackoverflow.com/users/400654/kevin-b询问此问题) 我可以摆脱setTimeout()并仍然有进程回调被解雇?