Подскажите паттерн по отложенному запуску функции? 
		
		
		
		Такая ситуация: периодически происходят аякс-запросы и в колбек-функции каждого должна выполняться функция allgood(), но она должна запуститься только когда нет незавершенных запросов. Т.е. должна помещаться в какую-то очередь и выполниться сразу же как появится окно (все ответы будут получены, а новых запросов еще не отправлено). 
	Есть ли какие-нибудь паттерны или готовые решения на этот счет? Может быть такая ситуация имеет свое название? P.S. И может в jQuery есть какой-нибудь счетчик ожидающих аякс-запросов, который можно было бы прочитать?  | 
	
		
 Специально для этих ситуаций в jquery есть  deffered http://habrahabr.ru/post/113073/ 
	либо всё по минимуму на javascript (в примере timeout вместо ajax для удобства но суть таже) сначало выполнятся все три таймера затем только сработает три кэлбека в порядке их добавления. 
function ajx (){
		var count=0;
		var funcs=[];
		return function(time,fun){
			count++;
			funcs.push(fun);
			setTimeout(function(){
				count--;		
				if (count==0) {  
					for (var i=0;i<funcs.length;i++  ) funcs[i]();
					funcs=[];
				}
			},time);
		}
}
       //пример использования
	test=ajx( );
	test(3000,function(){ alert("1я сработала") });
	test(100,function(){ alert("2я сработала") });
	test(1000,function(){ alert("3я сработала") });
 | 
	
		
 В моем конкретном случае подошел бы даже такой метод: 
	
$.ajaxStop(function(){allgood()})
Т.к. allgood() сохраняет порядок расположения элементов и ее можно безболезненно запускать когда угодно, главное, чтобы в это время не добавились или удалились элементы.Правда, если появятся левые аякс запросы, то способ окажется не кошерным. Тогда вроде бы подходит такой вариант: 
$(".log").ajaxComplete(function(e, xhr, settings){
    if (была запущена функция добавления/удаления) allgood()
});
Но как отследить, что в ajaxComplete участвовали функции добавления/удаления (в моем случае, они посылают post-запрос "type":"add"/"delete").Другой вариант: $.when( deferred1, deferred2,… )Подходящая штука, только хорошо бы в место deferred1, deferred2,… напрямую использовать deferred из метода $.ajax, только как получить ссылку на него?  | 
	
		
 Цитата: 
	
 xhr.type === "add/delete" // ?  | 
| Часовой пояс GMT +3, время: 08:10. |