2013-08-13 2 views
0

Я создаю веб-приложение под названием «Ваша жизнь в музыке», в котором пользователь подключается к своей дате рождения, и приложение отображает верхний хит биллборда с каждого дня рождения с момента его рождения. Приложение ведет переговоры с Last.fm api, чтобы получить обложку альбома для каждой песни. В настоящее время для приложения требуется некоторое время, чтобы скомпилировать все обложки альбомов, и кто-то предложил ускорить процесс, объединив все вызовы API в один запрос. Хотя я немного новичок, и я не уверен, что это можно сделать. Итак, мой вопрос: как объединить несколько вызовов в один запрос?Объединение нескольких вызовов API в один запрос

Вот приложение: http://www.dailyspiro.com

И критический код:

function compileDisplay(birthDays) { 
// create an HTML list that for each birthday displays top song, artist, and album art 
htmlObj = {} 
for (i = 0; i < birthDays.length; i++) { 
    var age = birthDays[i][0]; // age isn't equal to i if user was born before 1958 
    var date = birthDays[i][1]; 
    var track = billboard[date]['song']; 
    var artist = billboard[date]['artist']; 
    getAlbumArt(age, track, artist, birthDays); 
    } 
} 

function getAlbumArt(age, track, artist, birthDays) { 
$.getJSON("http://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key=(myApiKey)&artist=" + artist + "&track=" + track + "&format=json&callback=?", function (data) { 
    try { 
     var image = data.track.album.image[2]['#text']; 
     if (image == 'http://cdn.last.fm/flatness/catalogue/noimage/2/default_album_medium.png') { 
      throw 'generic image'; 
     } 
    } catch (err) { 
     var image = 'images/' + track + '.jpg'; 
    } 
    compileHtml(age, track, artist, image, birthDays) 
    }) 
} 
+0

Возможный дубликат [Параллельные асинхронные запросы Ajax с использованием jQuery] (http://stackoverflow.com/questions/1060539/parallel-asynchronous-ajax-requests-using-jquery) –

ответ

2

ли вы можете вызовы API пакетного вместе до самого API. Я быстро просмотрел API и не нашел ничего, позволяющего выполнять несколько операций. Я также проверил метод, позволяющий сразу получать информацию о нескольких дорожках без каких-либо успехов. Кажется, вам не повезло.

Однако вы можете реализовать какое-то кэширование, чтобы избежать выполнения этих запросов все время. Например, у вас может быть ваша собственная серверная служба, которая действует как средний уровень между API-интерфейсом lastfm и клиентским приложением. Тогда серверный API будет реализовывать кэширование и любую другую логику оптимизации.

Смежные вопросы