Пользовательский менеджер событий

110
23 октября 2019, 13:00

Создал обертку для загрузки файлов, которая в зависимости от конфигурации может загружать файлы из очереди, при ошибке повторять попытку определенное количество раз и делать другие полезные вещи.

Мне нужно обрабатывать процесс загрузки каждого файла, что бы например создать полосу прогресса, обновлять прогресс при каждом событии загрузки и по окончании показать что файл загружен или ошибку.

Сейчас я делаю так: при загрузке нового файла создаю объект предоставленного пользователем класса и при определенных событиях вызываю методы с определенными именами. Например fileHandler.loadStart(url), fileHandler.progress(xhrProgressEvent). Так я могу реализовать всё что мне нужно. Например при создании объекта создать нужные элементы и при вызове методов взаимодействовать с нужными элементами через замыкания.

Но мне такой подход кажется не стандартным, не привычным. Хотя бы потому, что мне нужно поставлять вместе с библиотекой обертки, ещё и интерфейс класса менеджера событий. И для пользователей такое взаимодействие может показаться запутанным.

Есть ли какие-то аналоги? Возможно какой-то встроенный менеджер событий или что-то вроде этого. Как бы вы реализовали такое поведение?

Обращаю внимание на то, что передавать какой-нибудь EventTarget и вызывать события через него не получится, потому что в этом случае пользователь не может один раз создать не глобальную переменную и обращаться к ней при вызове событий, а значит прийдется каждый раз вычислять элемент в котором нужно обновить информацию, а это не производительно и может быть даже невозможно (например, если элемент вычисляется по url, который может быть не уникальным, из-за загрузки нескольких файлов по одной и той же ссылке, что технически возможно)

READ ALSO
Как ускорить парсинг страницы phantom?

Как ускорить парсинг страницы phantom?

Есть функция, выполнение ее занимает примерно 5 секундЭта функция получает ссылку на страницу, далее выполняются встроенные методы phantom

108
Почему не наследуется конструктор?

Почему не наследуется конструктор?

Есть 2 функции конструкторов, прототип 1-ой функции-конструктора наследуется через Objectcreate, но в качестве прототипа ошибочно указан не объект(прототип),...

129
Расширить EventTarget, без синтаксиса “class”

Расширить EventTarget, без синтаксиса “class”

Как я могу записать аналог class MyClass extends EventTarget{}, без использования синтаксиса "class"? В спецификации сказано что это только синтаксический сахар,...

125
Как добавить/удалить класс в куки?

Как добавить/удалить класс в куки?

Пожалуйста, подскажите, как можно при: добавлении, удаление классов (при toggleClass например) сохранять результат после перезагрузки страницыЯ...

128