Я нахожусь в процессе создания вращающегося текстового генератора. Генератор объединяет предложения (текст )из ряда массивов, визуально "перебирает" их и дополняет. Я подумал, что лучше всего создать Fiddle с базовой версией генератора в том виде, в каком я его сконструировал сейчас :
. Пояснение
Основные работы заключаются в следующем:
Array1
, Array2
и Array3
в скрипке)combo0
. и combo1
на скрипке)Generate
, которая визуально циклически циклирует предложения из массива предложений(combo0[0]
на скрипке)var times = 8
. на скрипке)Generate
, на этот раз со вторым массивом (combo0[1]
. на скрипке)Причина обратного вызова заключается в том, что мне нужно «дождаться» завершения циклического эффекта, а затем двигаться дальше.
Вопрос
Хотя это делает именно то, что мне нужно (, и помимо того факта, что я очень сомневаюсь, что это способ сделать это; Я всегда чувствую себя немного странно, когда пишу функцию, которая зацикливается ), у меня есть следующая проблема:
В массивах combo
я определяю, какие из массивов «предложения» могут быть возможными комбинациями. Это прекрасно работает, если есть две комбинации , но если их больше двух, у меня возникают проблемы:
Generate(combo0[0], i, function(i) { //generate from first array element of combo0, callback to generating from second array of combo0
Generate(combo0[1], i, function(i) {
$('div#status').html('Done!'); //show status
$('input#generate').removeAttr("disabled"); //enable button
});
})
Мне пришлось бы рекурсивно переписать это, чтобы учесть возможность массива combo
, состоящего из 3 или даже 4 вариантов.И, вероятно, это сломает скрипт, если массив combo
содержит только 2 массива (или 1 массив ).
Вот где я застрял. Основная проблема заключается в том, что если я перебираю массив combo
, например. с.each (); функция generate
вызывается несколько раз синхронно, поэтому весь эффект "циклирования" теряется.
Я пробовал писать различные циклы, которые учитывают длину заданного массива combo
, но сегодня у меня сбоит больше браузеров, чем когда-либо прежде, и я не могу понять, что делать.