在 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 App API:标签页、播放列表 UI 刷新