2013-10-11 4 views
0

Использование API v1.Цеповые вызовы загрузки в приложениях Spotify api

Не уверен, как часто мне придется делать такие вещи, но я подозреваю, что это честно.

Я хочу проверить, не потерял ли пользователь список плейлистов. Возможно ли это сделать без вложенной нагрузки? Я вижу, что 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); 
      } 
     }); 
    }); 
+0

Из того, что я вижу, кажется, что это вложение - это план. Хотелось бы иметь возможность сказать load ('owner.currentUser') или что-то еще аналогичный. – Thomas

ответ

1

Вы правы, и ваш - лучший способ проверить его. Вам нужно сделать 2 асинхронных вызова и связать их так.

Альтернатива была бы принести первый идентификатор для текущего пользователя через models.session.user.load('username').done(function(u) { ... });, который возвращает имя пользователя, а затем сравнила его с Ури владельца плейлиста (предварив имя пользователя с spotify:user:. Но, как вы можете см., эта альтернатива не спасет вас от создания 2 вложенных вызовов.