几次ajax调用成功后触发事件

时间:2010-07-21 07:08:02

标签: jquery ajax events triggers reactive-extensions-js

我想知道在几个(无序的)ajax调用完成后触发事件的最佳方法是什么。

为了使它更清晰一些,我想调用一个方法doSomethingGreat()来触发几个ajax调用,这些调用的顺序是不需要的。我只是想在所有这些调用成功时触发事件'SomethingGreatFinished'。我也不想链接这些调用,因为这将缺乏性能,并且完全违背异步编程的想法。

我想知道是否有。)有一个共同的模式,b。)这可以使用本机jquery功能的Reactive Extensions for JavaScript(RxJs)或c。)。

感谢任何帮助!

3 个答案:

答案 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'。