我想知道在几个(无序的)ajax调用完成后触发事件的最佳方法是什么。
为了使它更清晰一些,我想调用一个方法doSomethingGreat()来触发几个ajax调用,这些调用的顺序是不需要的。我只是想在所有这些调用成功时触发事件'SomethingGreatFinished'。我也不想链接这些调用,因为这将缺乏性能,并且完全违背异步编程的想法。
我想知道是否有。)有一个共同的模式,b。)这可以使用本机jquery功能的Reactive Extensions for JavaScript(RxJs)或c。)。
感谢任何帮助!
答案 0 :(得分:3)
RxJS将允许您使用ForkJoin运算符执行此操作,此运算符使用带有值的N个可观察量并创建一个在所有N个可观察量完成时使用数组触发的observable。
请参阅Matthew Podwysocki关于此运算符的博文:http://codebetter.com/blogs/matthew.podwysocki/archive/2010/04/23/introduction-to-the-reactive-extensions-for-javascript-going-parallel-with-forkjoin.aspx
答案 1 :(得分:1)
您应该查看.ajaxStop()。
但是,callback
将触发完成的每个ajax请求。因此,为了知道您的最后请求何时完成,您还需要调用.ajaxStart(),或者您需要针对您触发的每个请求迭代global variable
并{{1它在decrement
上。如果该变量达到.ajaxStop()
,则您的所有请求都已完成。
答案 2 :(得分:0)
如果您知道正在进行多少次调用,则将变量设置为该数字,并在每次发生AJAX完成事件时将其递减。当变量达到零时,发生了'SomethingGreat'。