我正在尝试从YouTube数据API加载歌曲列表,并且一直成功,直到我将其分解为自己的功能。
当我将局部变量的值返回到调用函数时,问题就出现了。基本上,当我尝试使用它时,当它有值时,它是一个空数组。有人知道会发生什么吗?
function LoadSongList(feed){
songList = new Array();
$.getJSON(feed, function(data){
if (data['feed']) {
$.each(data['feed']['entry'], function(i, entry){
songList.push({
videoID: entry.media$group.yt$videoid.$t,
title: entry.title.$t,
tumbnailUrl: entry.media$group.media$thumbnail[0].url,
author: entry.author[0].name.$t
});
});
}
});
return songList;
}
答案 0 :(得分:4)
您应该提供回调方法。 $.getJSON
是异步方法,您尝试在调用success方法之前返回songList
。
function LoadSongList(feed, callback){
songList = new Array();
$.getJSON(feed, function(data){
if (data['feed']) {
$.each(data['feed']['entry'], function(i, entry){
songList.push({
videoID: entry.media$group.yt$videoid.$t,
title: entry.title.$t,
tumbnailUrl: entry.media$group.media$thumbnail[0].url,
author: entry.author[0].name.$t
});
});
callback(songList);
}
});
}
请致电:
LoadSongList(feed, function(songList){
// your code
});