0

I have a problem when executing this code:

require(['$api/models','$api/library#Library'], function(models,Library) {

// THIS ONLY HAPPEN FOR TOP LIST
var uri=Library.forCurrentUser().toplist.uri;
// IF YOU USE ANY OTHER PLAYLIST IT WORKS FINE
//  var uri="spotify:user:vdesabou:playlist:0xy2zExFmPzJZsY0X0bCC5";

var playlist = models.Playlist.fromURI(uri);
playlist.load('tracks').done(function() {
    console.log("loaded 1");
playlist.tracks.snapshot().done(function(snapshot) {
    console.log("snapshot length 1 " + snapshot.length);

    snapshot.loadAll('name')
       .done(function(snap_tracks) { console.log("loaded tracks length 1 " + snap_tracks.length);    })
       .fail(function() { console.log("loadAll failed"); });
    }).fail(function() { console.log("snapshot failed"); });

}).fail(function() { console.log("playlist load tracks failed"); });

});

If I execute multiple time (by reloading my application), I don't get results about 1 time out of 3

When it doesn't work:

loaded 1

When it works I get:

loaded 1
snapshot length 1 20 
loaded tracks length 1 20 

This is happening only for top list playlist, any other playlist is ok.

What could be wrong? Thanks

4

2 回答 2

0

Library 的 toplist 属性已经是一个播放列表,因此您无需从其 URI 创建新的 Playlist 对象。此代码段与您的代码段相同,但加载了 toplist 属性并使用它直接获取曲目,而不是创建新的播放列表。

require(['$api/models','$api/library#Library'], function(models,Library) {

  var library = Library.forCurrentUser();
  library.load("toplist").done(function() {
    var toplist = library.toplist;

    toplist.load('tracks').done(function() {
      console.log("loaded 1");
      toplist.tracks.snapshot().done(function(snapshot) {
        console.log("snapshot length 1 " + snapshot.length);

        snapshot.loadAll('name')
          .done(function(snap_tracks) { console.log("loaded tracks length 1 " + snap_tracks.length);    })
          .fail(function() { console.log("loadAll failed"); });

      }).fail(function() { console.log("snapshot failed"); });

    }).fail(function() { console.log("playlist load tracks failed"); });

  }).fail(function() {
    console.log("Could not load toplist.");
  });

});

我确实尝试了您提供的片段,并且与 Thomas 类似,我找不到任何问题。希望这会有所帮助。

于 2013-12-21T23:44:37.407 回答
0

要么是本地化问题(我无法重现),要么由于函数的异步性质,您不能在同一个播放列表上进行两次相同的调用。

我已经尝试了您的代码 3 次(在 Windows v0.9.6 上),但没有看到您看到的行为。

重命名 playlist1,2,3 并没有改变我的行为,双向工作。

于 2013-12-14T21:48:07.310 回答