更新:新しいプレビュー 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;
検索がすべて正常に機能することを心配する必要はありません。問題は、検索に時間がかかり、検索が完了する前に matchingTracks が返されることです。
jquery の deferred が解決策になると思いますが、私は javascript と jquery を初めて使用するので、主にループが問題を引き起こしたため、思い通りに動作させることができませんでした ^^。
これを解決するためのアイデアはありますか?