Поскольку вы просто хотите, чтобы элементы представляли собой массив, вы можете использовать $.merge()
в повторяющейся функции:
function fetchPlaylist(pid, start, items) {
items = items || [];
start = start || 0;
var the_url = 'http://gdata.youtube.com/feeds/api/playlists/' + encodeURIComponent(pid) + '?v=2&alt=jsonc&max-results=50';
$.ajax({
type: "GET",
url: the_url,
data: { start: start },
dataType: "jsonp",
success: function(responseData, textStatus, XMLHttpRequest) {
if (responseData.data != null) {
if (responseData.data.items) {
$.merge(items, responseData.data.items); //add to items
if (responseData.data.totalItems > start + 50) {
fetchPlaylist(pid, start + 50, items);
} else {
outputFunction(items);
}
} else {
console.log('No results for playlist: "' + pid + '"');
}
}
}
});
}
Вы можете попробовать здесь, вы просто вызываете его с идентификатором плейлиста, например:
fetchPlaylist("84780DAC99E1A285");
Каждый раз, когда запрос завершается, мы видим, если totalItems
, который возвращает YouTube, выше, чем мы запросили плюс 50, еслив таком случае, принесите снова, добавьте эти результаты ... если нет, то мы закончили и передали объединенный массив в outputFunction()
.