Ссылка для просмотра заданий: http://shri-2015.parseapp.com/
- Основной упор делался на функциональность, не на дизайн
- Шаблонизаторы, css препроцессоры, сторонние библиотеки не использовались для демонстрации чистоты решения
- В некоторых местах структура html не оптимальна и может быть не удобна при натягивании более сложного дизайна
- Примеры попапов сделаны только для первых двух строк
- JS используется исключительно как фоллбек для фиксированного позиционирования хедера таблицы
Допущенная ошибка типична для начинающего разработчика. Создается не правильное замыкание. Переменная request изменяется внутри цикла и последнее её значение вызывается в callback, в результате в responses находится только один элемент, а не 3 - что требуется для вывода сообщения в консоль. В дальнейшем нужно быть всегда осторожным при вызове колбеков, внимательно проверять какие переменные используются внутри и какие переменные могут измениться снаружи, в случае необходимости создавать корректные замыкания. По поводу множественных асинхронных запросов. Лучше использовать промисы. Облегчают поддержку, сокращают объем кода.
Использовать тег audio не получается из-за проблем обработки для сафари. Поэтому используются кастомные кнопки start и stop. Сделан только один способ визуализации. Значения эквалайзера взяты из iTunes.