Помогите с последовательным воспроизведением аудио JavaScript

Есть такой код:

function getAudio() {

if (RequestCount <= 2){
    //if ((count - nowItem) < 4)
  //  {
        let Request = new XMLHttpRequest();
        Request.responseType = 'blob';
        Request.open('GET', 'response.php?audio=true');
        Request.onloadstart = function (){
        }
        Request.onreadystatechange = function () {//Вызывает функцию при смене состояния.
            if (Request.readyState === XMLHttpRequest.DONE && Request.status === 200)
            {
                let reader = new FileReader();

                reader.onload = function() {
                    if (reader.result.length>400){
                        soundArray[count] = reader.result;
                         count++;
                    } else Request.abort();
                };
                reader.readAsDataURL(Request.response);
                RequestCount--;
            }
        }
        Request.send();
        RequestCount++;
 //   }
    }
}

Здесь я получают от php скрипта аудио файл из base64. Мне нужно первый раз воспроизвести аудио с 0 секунды, а последующие файлы воспроизводить с 0.8 секунды, причём начинать воспроизведение не когда доиграет первый, а во время начиная с 2.8 секунды.

Идея такова, у меня записывается 2 файла со звуком с микрофона. В первой записи записывается 3 секунды -> начинает запись второго файла-ждём ещё секунду-> заканчиваем первую запись Во втором тоже самое. Записываем 3 секунды->начинаем записывать первый файл->ждём секунду->заканчиваем вторую запись.

Вопрос заключается в том как всё это правильно воспроизводить чтоб компенсировать задержку между записями.

Сделал вот такой код, но работает не правильно..

function canplay(){
    if (soundArray[nowItem] !== undefined){
        console.log('current audio: '+nowItem);
            new Audio(soundArray[nowItem]).addEventListener('loadstart', function () {
                console.log(soundArray[nowItem]);
                delete soundArray[nowItem];
                console.log(soundArray[nowItem]);
                this.addEventListener('loadeddata', function (){
                    if (first){
                        first = false;
                        this.currentTime = 0;
                    } else
                    {
                        this.currentTime = 0.8;
                    }

                    this.addEventListener('timeupdate', function () {
                        if (this.currentTime>2.8 && this.currentTime<3){
                            nowItem++;
                            //console.log('next audio');
                        }
                    });
                    console.log("playing..");
                    this.play();
                });
            });
    }
}

Ответы (0 шт):