1

对于我的应用程序,我需要先对集合进行洗牌,然后再将其转换为快照以供以后使用。根据文档, shuffle()方法返回一个新的集合,其轨道是随机的,所以我应该能够立即调用 snapshot() 方法(因为它不会像 snapshot() 那样返回 Promise)。

这是我的测试代码,它在没有 shuffle 方法的情况下按预期工作。但是,添加它后,它在控制台中什么也没有显示。

playlist.load('tracks').done(function(tracks) {

  // Works when shuffle() is removed                    
  playlist.tracks.shuffle().snapshot()
    .done(

      function( snapshot ) {
        console.log( snapshot );

        for (var i = 0; i < snapshot.length; i++) {
          var track = snapshot.get(i);   
          console.log(track.name);
        }
      }
    );
});

有任何想法吗?

4

1 回答 1

1

看起来像一些雄心勃勃的文档 - shuffle 似乎没有实现。当我运行这个时:

require(['$api/models'], function (models) {
    playlist = models.Playlist.fromURI(localStorage.album_radio_playlist);

    playlist.load('tracks').done(function (tracks) {
        console.log(tracks);
        // Works when shuffle() is removed                    
        playlist.tracks.shuffle().snapshot()
          .done(

            function (snapshot) {
                console.log(snapshot);

                for (var i = 0; i < snapshot.length; i++) {
                    var track = snapshot.get(i);
                    console.log(track.name);
                }
            }
          ).fail(function (blah, err) { console.log("failed to shuffle " + err); });
    });
});

我得到了这个输出

14:46:05.156 A [shell/lists/ItemListFactory.h:239] Check failed: Not implemented!     
14:46:05.167 I [sp://67456db3aaa5a1c25a619472cdb2cbc3f52da3ed.album-radio/js/albumradio.js:684] failed to shuffle undefined
于 2014-03-03T14:49:34.567 回答