我有一个应用程序,我想从 API 获取数据.getJSON()
并将其存储在一个数组中,但我不想在数组完全加载之前继续使用代码,所以我调用了该.done()
方法,但是我的代码在数组完全定义之前继续向前移动,导致未定义的错误。以下是相关代码:
var similarList = getSimilar(randArtist, year);
similarList.done(function(item){
for (var j=0, len=similarList.length; j<len; j++){
similarArtistDict[similarList[j].name] =
similarArtistDict[similarList[j].name] || true;
}
该getSimilar
函数应该返回一个列表,从而定义变量similarList。相反,尽管我调用了 done,但代码直接移动到 for 循环,导致循环尝试获取similarList.length
.
编辑第 2 部分:我的 getSimilar 方法的精简版本供参考。我意识到函数本身没有返回任何东西,所以我尝试返回 AJAX 调用本身——它没有返回数组。如何调整此函数以返回数组 data.artists?:
function getSimilar(name, year){
$.getJSON(ECHONEST_SIMILAR_URI, {
api_key: ECHONEST_KEY,
name: name,
artist_start_year_before: year,
results: '5'
}, function(response){
var data = response.response;
console.log(data);
console.log(data.artists);
return data.artists;
} ); }