Предварительная загрузка аудиофайлов

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

Чтобы начать предварительную загрузку аудиофайла, необходимо вызвать функцию preload(). В качестве аргумента ей передается URL файла.

// Запуск предварительной загрузки аудиофайла.
audioPlayer.preload(src).then(function() {
        console.log("Предварительная загрузка началась.");
    }, function(err) {
        console.error("Не удалось начать загрузку.", err);
    }
);

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

Внимание. API не позволяет выполнять предзагрузку нескольких файлов одновременно. При повторном вызове функции preload() загрузка предыдущего файла оборвется и начнется загрузка следующего.

Для того чтобы применить какое-нибудь действие к предварительно загружаемому файлу (например, остановить загрузку), необходимо вызвать соответствующий метод с аргументом 1. Например:

// Остановка предварительной загрузки.
audioPlayer.stop(1);

// Функции для получения информации о предзагружаемом файле.
console.log("Ссылка на текущий трек", audioPlayer.getSrc(1));
console.log("Длительность трека", audioPlayer.getDuration(1));
console.log("Длительность загруженной части", audioPlayer.getLoaded(1)); 
...   
Внимание. Вызов функций без аргумента 1 приведет к тому, что действие будет применено к текущему файлу, а не к файлу, который находится в предварительной загрузке. Например, вызов stop() без аргументов приведет к остановке загрузки текущего файла, а не к остановке предварительной загрузки следующего.

Для воспроизведения предварительно загружаемого файла следует вызывать функцию playPreloaded():

// Воспроизведение предварительно загружаемого аудиофайла.
audioPlayer.playPreloaded().then(function() {
        console.log("Воспроизведение успешно началось.");
    }, function(err) {
        console.error("Не удалось начать воспроизведенние.", err);
    }
);
Примечание. В качестве параметра функции playPreloaded() можно передать URL файла, который необходимо воспроизвести. В этом случае прежде чем воспроизвести файл, API сначала проверит, что именно этот файл находится в состоянии предварительной загрузки (либо является последним среди предварительно загруженных). Если файл таковым не является, воспроизведение не будет запущено.

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