更新:新的预览 API 提供了一个简单的解决方案!
好的,我在使用新的 Spotify 预览 api 1.x 时遇到问题。此外,这是一个一般的 javascript/jquery ajax 问题。
我有一个从我的服务器后端获取 json 数组的函数。该数组表示包含音乐曲目(名称、艺术家)的一些推荐。完成后,我想通过 spotify api 搜索这些曲目。
$.when(getCurrentRecommendationList()).done(function(result) {
console.log(result);
matchRecommendations(result, showTracksList);
});
到目前为止,一切都很好。我的匹配推荐功能如下所示:
var matchedTracks = [];
for ( var i = 0; i < result.length; i++) {
var searchTerm = result[i].song.artist + " " + result[i].song.name;
var track;
// Search with SPOTIFY API
require([ '$api/search#Search' ], function(Search) {
var search = Search.search(searchTerm);
search.tracks.snapshot(0, 1).done(function(snapshot) {
track = snapshot.get(0);
if (track) {
var rec = new Recommendation(result[i].id, track);
matchedTracks.push(rec);
}
});
});
}
return matchedTracks;
不要担心搜索一切正常。问题是搜索需要一些时间,并且在搜索完成之前返回了我的matchedTracks。
我认为 jquery 的 deferred 将是解决方案,但由于我是 javascript 和 jquery 的新手,我无法真正让它们按照我想要的方式工作,主要是因为循环给我带来了麻烦 ^^。
有什么想法可以解决这个问题吗?