当前用户顶部列表的曲目快照出现间歇性问题

Intermittent issue with tracks snapshot for current user top list

本文关键字:问题 快照 曲目 用户 顶部 列表      更新时间:2023-09-26

我在执行以下代码时遇到问题:

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"); });
});

如果我多次执行(通过重新加载应用程序),在3次中大约有1次没有得到结果

当它不起作用时:

loaded 1

当它工作时,我得到:

loaded 1
snapshot length 1 20 
loaded tracks length 1 20 

这种情况只发生在顶级播放列表中,任何其他播放列表都可以。

可能出了什么问题?感谢

Library的toplist属性已经是一个播放列表,因此您不需要从其URI创建新的播放列表对象。这个片段与您的片段相同,但加载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.");
  });
});

我确实试过你提供的片段,和托马斯一样,我没有发现任何错误。希望这能有所帮助。

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

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

重命名播放列表1,2,3并没有改变我的行为,这是双向的。