In the current project appeared necessity to perform a consistent series of ajax queries and something to do with their results at the end.
It is a fairly typical task, when the pattern of its solution usually is called as a waterfall. The implementation of this pattern is node.js, although some people work in the browser - async.
But we do not want to include the entire module for a single method as well as the copy / paste. The callback function is passed to async, everywhere we used the jQuery.Deferred. There is no difference, but we do not want to “break” a design style :)
As a result, there is written a small utility similar to jQuery.when
Unlike to the jQuery.when, the functions and their return should be passed by arguments, and not jqxhr, otherwise sense of waterfall will be lost. Although, it will not cause the error, because the waterfall accepts any argument’s types.