アーティストの関連アーティストの最初の曲のトップのリストを表示する小さなアプリを作成しています。初めてアプリを読み込もうとすると、何も表示されません。しかし、「アプリケーションをリロード」すると、すべてがうまくいくようです。常に「リロード」を開始すると、同じトラックがリストに追加され続けます。
ロード時に動作するようにコードを引き締めるだけでなく、リストにトラックを継続的に追加するのを止めるにはどうすればよいですか?
require([
  '$api/models',
  '$views/list#List',
  '$api/toplists#Toplist'
  ], function(models, List, Toplist){
    'use strict';
  // Build playlist
  function buildList(trackURIArray){
    var arr = trackURIArray;
    models.Playlist
      .createTemporary("myTempList")
      .done(function(playlist){ 
        playlist.load("tracks").done(function(loadedPlaylist){
          for(var i = 0; i < arr.length; i++){
            loadedPlaylist.tracks.add(models.Track.fromURI(arr[i]));
          }
        });
        // Create list
        var list = List.forPlaylist(playlist,{
          style:'rounded'
        });
        $('#playlistContainer').append(list.node);
        list.init();
      });
  }
  // Get top track
  function getTopTrack(artist, num, callback){
    var artistTopList = Toplist.forArtist(artist);
    artistTopList.tracks.snapshot(0, num).done(function (snapshot){ 
      snapshot.loadAll('name').done(function(tracks){
        var i, num_toptracks;
        num_toptracks = num; 
        for(i = 0; i < num_toptracks; i++){
          callback(artist, tracks[i]);
        }
      });
    });
  }
  // Get Related
  function getRelated(artist_uri){
    var artist_properties = ['name', 'popularity', 'related', 'uri'];
    models.Artist
    .fromURI(artist_uri)
    .load(artist_properties)
    .done(function (artist){
      artist.related.snapshot().done(function(snapshot){
        snapshot.loadAll('name').done(function(artists){
          var temp = [];
          for(var i = 0; i < artists.length; i++){
            getTopTrack(artists[i], 1, function(artist, toptrack){
              var p, n, u;
              p = artist.popularity;
              n = artist.name;
              u = artist.uri;
              temp.push(toptrack.uri);
            });
          }
          // Build a list of these tracks
          buildList(temp);
        });
      });
    });
  }
  getRelated('spotify:artist:2VAvhf61GgLYmC6C8anyX1');
});