Я использую API javascript youtube v3 для запроса 3 разных плейлистов в некоторых видео данных. Он успешно работает, но метод execute()
запрашивает видеоданные из порядка, который был вызван в цикле (обновите page). Код очень прост и может быть отлажена here, или при желании здесь:YouTupe API V3, несколько запросов youtube.playlistItems.list не в том же порядке
var playlistsID = [...]
for (var i = 0; i < playlistsID.length; i++) {
function playlistItem() {
var request = gapi.client.youtube.playlistItems.list({
part: 'snippet',
playlistId: playlistsID[i],
maxResults: 4
});
request.execute(function(response) {
if ('error' in response) {
console.log(response.error.message);
}
else {
for (var j = 0; j < response.items.length; j++) {
showVideo(response.items[j]);
}
}
});
}
}
function showVideo(response) {
var videoThumb = response.snippet.thumbnails.medium.url,
container = document.getElementById("video-container"),
videoDiv = document.createElement("div"),
image = document.createElement("img");
image.setAttribute("src", videoThumb);
container.appendChild(videoDiv);
videoDiv.appendChild(image);
}
Моя теория состоит в том, что метод execute()
запрашивает информацию асинхр, но если это правильно, что я должен сделать, чтобы установить порядок в запросах?