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

Posted

技术标签:

【中文标题】在 Spotify 应用程序 api 中链接加载调用【英文标题】:Chaining load calls in Spotify apps api 【发布时间】:2013-10-19 19:54:07 【问题描述】:

使用 API v1。

不确定我必须多久做一次这样的事情,但我怀疑有一点。

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

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

【问题讨论】:

据我所知,这个嵌套似乎是计划。希望能够说 load('owner.currentUser') 或类似的东西。 【参考方案1】:

你是对的,你的方法是最好的检查方法。您需要进行 2 个异步调用并像这样链接它们。

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

【讨论】:

以上是关于在 Spotify 应用程序 api 中链接加载调用的主要内容,如果未能解决你的问题,请参考以下文章

Spotify Web API 调用引发 502 Bad Gateway 错误

如何使用 Spotify Apps API 对象?

Spotify App API:标签页、播放列表 UI 刷新

C# Windows Forms Spotify API 用户授权

Spotify API,无法正确链接两个 API 调用

在 Spotify(Javascript)中进行 ajax 调用后没有保存 Cookie?