在Spotify应用程序API中链接加载调用

时间:2013-10-11 16:38:49

标签: javascript api spotify promise spotify-app

使用API​​ v1。

不确定我有多长时间不得不做这样的事情,但我怀疑还有一点。

我想检查用户是否是已删除的播放列表的所有者。如果没有下面的嵌套加载链接,是否可以这样做?我看到Promises can be joined,但我认为如果没有加载currentUser我就无法加载owner。有什么方法可以简化这个吗?

    var drop = models.Playlist.fromURI(...);
    var success_message = document.createElement('p');
    success_message.innerHTML = 'Playlist successfully dropped: ' + drop.uri;
    this.appendChild(success_message);
    drop.load('owner').done(function (playlist) {
        playlist.owner.load('currentUser').done(function (owner) {
            if (owner.currentUser) {
                var allowed_message = document.createElement('p');
                allowed_message.innerHTML = 'You are the owner of this playlist, let\'s get to work!';
                drop_box.appendChild(allowed_message);
            }
            else {
                var disallowed_message = document.createElement('p');
                disallowed_message.innerHTML = 'You are not the owner of this playlist, choose a different one please!';
                drop_box.appendChild(disallowed_message);
            }
        });
    });

1 个答案:

答案 0 :(得分:1)

你是对的,你的是最好的检查方法。你需要进行2次异步调用并将它们链接起来。

另一种方法是首先通过models.session.user.load('username').done(function(u) { ... });获取当前用户的标识符,该标识符返回用户名,然后将其与播放列表所有者的uri进行比较(用户名前缀为spotify:user:但是,正如您所看到的,这种替代方案不会使您无法进行2次嵌套调用。