Javascript Spotify预览API搜索曲目和专辑

Javascript Spotify预览API搜索曲目和专辑,javascript,spotify,Javascript,Spotify,我目前正在尝试将Spotify应用程序迁移到api的新1.0版本 我在搜索方面有问题。我想用搜索字符串搜索目录,并从搜索结果中获取所有曲目信息、艺术家姓名和专辑名称。但是,搜索结果中似乎不包括唱片集名称(仅URI:s) 之后我是否必须异步加载所有结果曲目的所有唱片集名称?如果可能的话,我想避免这种情况 我正在这样寻找 var search = Search.search(searchString); search.tracks.snapshot().done(function(snapshot)

我目前正在尝试将Spotify应用程序迁移到api的新1.0版本

我在搜索方面有问题。我想用搜索字符串搜索目录,并从搜索结果中获取所有曲目信息、艺术家姓名和专辑名称。但是,搜索结果中似乎不包括唱片集名称(仅URI:s)

之后我是否必须异步加载所有结果曲目的所有唱片集名称?如果可能的话,我想避免这种情况

我正在这样寻找

var search = Search.search(searchString);
search.tracks.snapshot().done(function(snapshot) {
    var results = snapshot.toArray();
    // no album names in the results tracks
}).fail(function() {
    console.error('Error retrieving snapshot');
});

在API 1.0中,某些数据不会自动检索。这意味着,理想情况下,您将只获取所需的数据,从而减少数据流量并提高性能。缺点是您需要自己组合曲目数组和唱片集名称,以异步方式获取数据

对于每个要获取其唱片集名称的曲目。这就是你要做的:

var maxTracks = 15;
var search = Search.search(searchString);
search.tracks.snapshot(0, maxTracks).done(function(snapshot) {
  snapshot.toArray().forEach(function(result) {
    result.album.load('name').done(function(album) {
      // here you have access to the album.name attribute
    });
  });
}).fail(function() {
  console.error('Error retrieving snapshot');
});
这种方法的问题在于,将以不同于轨迹显示顺序的顺序显示数据。如果需要保持顺序,可以使用对象:


使用一组
Promise
s将保持与曲目相同的顺序。

第二个版本似乎对我的应用程序运行良好,我不确定如何使用promises。
var maxTracks = 15;
var search = Search.search(searchString);
search.tracks.snapshot(0, maxTracks).done(function(snapshot) {
  var promises = [];
  snapshot.toArray().forEach(function(result) {
    promises.push(result.album.load('name'));
  });
  models.Promise.join(promises)
    .done(function(albums) { console.log('Loaded all albums.', albums); })
    .fail(function(albums) { console.log('Failed to load at least one album.', albums); });
}).fail(function() {
    console.error('Error retrieving snapshot');
});