Скажем, у меня очень длинный список, где для каждого элемента требуется асинхронный вызов для извлечения. Я хотел бы написать API поверх этого списка, чтобы потребитель мог просто вызвать «next()» или иначе синхронно перебирать список.Итерация над неопределенным массивом отложенных элементов
В идеале я хотел бы иметь что-то, что выглядит следующим образом:
while ((foo = generator.next()) != null) {
process(foo);
}
Но, я считаю себя спотыкаясь семантикой отсроченных вызовов, и я не знаю, как избежать этого жестко запрограммированного шаблона в общий цикл:
$.when(foo).then(process1AndFetch2)
.then(process2AndFetch3)
.then(process3AndFetch4)
...
Предположительно, я мог бы сделать это сам с обратных вызовов
var callback = function() {
process();
fetch(callback);
}
fetch(callback);
Но тогда мой стек будет очень глубоким, поэтому я работал отложенным.
Есть ли обычные подозреваемые для превращения такого рода асинхронного поведения в синхронный API?
Посмотрите [здесь] (http://stackoverflow.com/questions/16384841/chain-ajax и-выполнение-его-в-последовательность-JQuery отсроченный/16387812 # 16387812). Вопрос сформулирован по-разному, но мой ответ должен дать вам несколько убедительных подсказок о том, как построить цепочку '.then()' динамически. –