Я работаю над JavaScript-ориентированным сайтом, где у меня будет много вещей, которые нужно выполнить в определенном порядке.Многие вещи включают в себя анимацию и AJAX-загрузку.Некоторый псевдокод может выглядеть следующим образом:
- Загрузка данных в формате JSON
- Создание HTML-элементов с использованием загруженных данных JSON и рендеринг их внутри div
- Созданиеэлементы внутри div прокручиваются с помощью ползунка пользовательского интерфейса jQuery
- Случайное число от 1 до общего количества загруженных элементов
- Заставьте ползунок jQuery UI прокручивать (анимировать) элемент, представляющий случайное числочисло продолжительностью 500 миллисекунд
- Загрузить дополнительные данные в формате JSON
- Заменить другие элементы на странице
- И так далее ...
Каждый шаг в этом заключен в функцию - одна функция загружает данные JSON, другая генерирует HTML-элементы, третья инициализирует слайдер пользовательского интерфейса jQuery и так далее.Инкапсуляция кода в функции облегчает чтение кода для меня, но, прежде всего, я хочу иметь возможность вызывать функции в разных порядках в зависимости от того, что происходит на странице, и я хочу быть уверен, что одна функция закончилась до того, какследующий выполнен.
Если бы были только обычные функции, которые не включали анимацию AJAX или jQuery, я бы просто выполнял функции, которые я хочу выполнить, одну за другой.Проблема в том, что мне нужно дождаться окончания анимации и функции извлечения данных, прежде чем двигаться дальше.Чтобы помочь мне, и методы анимации и AJAX в jQuery позволяют мне отправлять обратный вызов.Но вот где я заблудился.
Я хочу сделать следующее:
- Загрузить данные JSON.Если загрузка прошла успешно, продолжайте и ...
- Генерируйте HTML-элементы
- Сделайте элементы прокручиваемыми
- Произведите рандомизацию числа между 1 и общим количеством загруженных элементови передать его ...
- Функция, которая заставляет слайдер jQuery скользить (анимироваться) к элементу.Когда анимация закончится ...
- Загрузка дополнительных данных в формате JSON.Если загрузка прошла успешно, продолжайте и ...
- Замените другие элементы на странице
Идеально было бы, если бы я мог настроить эту последовательность / цепочку событий водно место, например, внутри обработчика событий.Если я хочу вызывать функции в другом порядке или не вызывать их все, я просто установил бы другую последовательность / цепочку.Примером может быть:
- Произвести рандомизацию числа между 1 и общим количеством загруженных элементов и передать его ...
- Функция, которая заставляет слайдер jQuery скользить (анимированный)к элементу.Когда анимация закончится ...
Это означает, что я должен был бы контролировать обратные вызовы на каждом шаге.
Надеюсь, вы понимаете, что я ищу.Я хочу контролировать всю последовательность выполнения из одной функции.Эта функция будет «дирижером оркестра», а все остальные функции будут различными инструментальными секциями оркестра.Этот дирижер работает так, что ему нужны уши, чтобы он мог слышать, когда скрипачка закончила играть соло, и может дать сигнал рогу начать играть.Извините за банальную аллегорию, но я надеюсь, что это облегчит понимание того, что я хочу сделать.
Заранее спасибо!/ Томас