Загрузка огромного количества видео с YouTube API с помощью AJAX - PullRequest
0 голосов
/ 25 июня 2019

Я пытаюсь отобразить более 200 видео из собственного плейлиста (сохраненного в моей базе данных).Я хочу показать весь список подряд, используя ajax, с setInterval, чтобы позволить API Youtube немного дышать.

Вот мой код:

for(var i in a.playlist_rows) {
    iTime += 100;

    setTimeout(function() {
        $.ajax({
            url:'https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails&id='+a.playlist_rows[i].videoID+'&key=XXX',
            method:'GET',
            cache:false,
            dataType:'json',
            success:function(a) {
                callPageSuccess(a);

                showIn = "playlist_content_show";
                $('button#btn_play').prop('disabled', false);
                $('button#btn_play_repeat').prop('disabled', false);
            },
            error:function() {
                showError('danger', 'Erreur XHR détectée. Contactez le staff.');
            }
        });
    }, iTime);
}

На самом деле, из-за setInterval (), это последний идентификатор видео, который будет вызываться при каждом вызове ajax.Как проехать на этом?

1 Ответ

0 голосов
/ 25 июня 2019

Нашел решение, передав аргумент в мою анонимную функцию:

for(var i in a.playlist_rows) {
    iTime += 100;

    setTimeout(function(videoID) {
        $.ajax({
            url:'https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails&id='+videoID+'&key=AIzaSyAHLt89IGVRiB8aAI4hUFpRFxkxQTHAqZo',
            method:'GET',
            cache:false,
            dataType:'json',
            success:function(a) {
                callPageSuccess(a);

                showIn = "playlist_content_show";
                $('button#btn_play').prop('disabled', false);
                $('button#btn_play_repeat').prop('disabled', false);
            },
            error:function() {
                showError('danger', 'Erreur XHR détectée. Contactez le staff.');
            }
        });
    }, iTime, a.playlist_rows[i].videoID);
}
...