Показать сообщение отдельно
  #7 (permalink)  
Старый 10.08.2017, 05:58
Интересующийся
Отправить личное сообщение для koha345 Посмотреть профиль Найти все сообщения от koha345
 
Регистрация: 16.04.2016
Сообщений: 28

Сообщение от Rise Посмотреть сообщение
koha345,
Такой итератор:
function iterator(array) {
	var index = 0, cycle = 0;
	return {
		next: function () {
			if (index >= array.length) index = 0, cycle++;
			return {
				cycle: cycle,
				index: index,
				value: array[index++]
			}
		}
	}
}

var groups = ['a', 'b', 'c'];

var iterable = iterator(groups);

for (var i = 6; i--;) console.log(iterable.next()); // test

Как можно использовать:
function request(current) {
	$.ajax({
		complete: function (jqXHR, textStatus) {
			if (current.cycle < 2) {
				if (current.cycle == 0) {
					console.log('task 0', current.value, current.index);
				}
				if (current.cycle == 1) {
					console.log('task 1', current.value, current.index);
				}
				request(iterable.next());
			} else {
				console.log('no tasks');
			}
		}
	});
}

request(iterable.next());
Интересное решение. Попробую реализовать при помощи данного подхода. Отпишусь, когда закончу.
Ответить с цитированием