0

我在使用这个 spotify 播放列表 spotify:user:juan20150:playlist:5rl5QaWjWtEPv9a057w3qc 时遇到问题

这是我见过的第一个有这个问题的播放列表。返回的快照长度是 290,但是当我执行 snapshot.loadAll 时,它只返回 289 个轨道。

知道为什么会发生吗?

    var playlist = models.Playlist.fromURI("spotify:user:juan20150:playlist:5rl5QaWjWtEPv9a057w3qc");
playlist.load('tracks').done(function() {

      playlist.tracks.snapshot().done(function(snapshot) {
        console.log("snapshot length " , snapshot.length);
        $i=0;
        snapshot.loadAll('name').each(function(track) {


            console.log("i=" , i++);


        });
    });

});

结果:

快照长度 290 i = 289(最后)

谢谢

4

1 回答 1

0

因为你从零开始,然后递增。如果播放列表的长度为 3,它将打印

0
1
2

为 3 首曲目。


更新自己尝试 首先,它有助于放置实际代码而不是伪代码。我把你的代码扔进了我的应用程序,但它没有用。一旦我修好它,它就会从 0 打印到 288。所以,我删除.each并放入.done它并没有打印任何东西。但是,.fail确实返回了一些东西。不幸的是,错误是未定义的。下面:

require(['$api/models'], function(models) {
    var playlist = models.Playlist.fromURI("spotify:user:juan20150:playlist:5rl5QaWjWtEPv9a057w3qc");
    playlist.load('tracks').done(function() {

    playlist.tracks.snapshot().done(function(snapshot) {
        console.log("snapshot length " + snapshot.length);
        var i=0;
        snapshot.loadAll('name')
            //.each(function(t) { console.log(i++); })
           .done(function(snap_tracks) { console.log("loaded tracks length " + snap_tracks.length); })
           .fail(function(track, error) { console.log(error + ". " + track.length); });
        });

    });
});

输出:

14:39:15.898 I [sp://67456db3aaa5a1c25a619472cdb2cbc3f52da3ed.album-radio/js/alb
umradio.js:507] snapshot length 290
14:39:16.236 I [sp://67456db3aaa5a1c25a619472cdb2cbc3f52da3ed.album-radio/js/alb
umradio.js:512] undefined. 290

我最好的猜测是,您那里有一首不再可以访问的歌曲(许可纠纷或其他事情)。

于 2013-12-07T23:01:23.237 回答