我对搜索功能在Spotify API中的工作方式感到困惑。他们的例子是这样的:
var sp = getSpotifyApi();
var models = sp.require('$api/models');
var search = new models.Search('Rihanna');
search.localResults = models.LOCALSEARCHRESULTS.APPEND;
var searchHTML = document.getElementById('results');
search.observe(models.EVENT.CHANGE, function() {
var results = search.tracks;
var fragment = document.createDocumentFragment();
for (var i=0; i<results.length; i++){
var link = document.createElement('li');
var a = document.createElement('a');
a.href = results[i].uri;
link.appendChild(a);
a.innerHTML = results[i].name;
fragment.appendChild(link);
}
searchHTML.appendChild(fragment);
});
search.appendNext();
所以,我猜调用appendNext()启动搜索,内部函数在有结果时被调用?但结果仅限于总数的某个数字(默认为50)。你怎么得到其余的?你是否从回调中递归地再次调用appendNext()?此外,这是否意味着在您执行此操作后,您的列表包含原始结果,或者原始结果是否已替换?有人知道搜索所有可用结果的示例吗?
他们还提到如果搜索正在运行,则appendNext()不执行任何操作。那么,在获得下一个“页面”之前,你如何优雅地等待当前搜索完成?
他们的文件很糟糕,恕我直言。假设您从服务器总共有1000个搜索结果。并说我希望看到结果900-1000。我是否一直反复调用AppendNext直到我到达900?
由于 鲍勃
答案 0 :(得分:0)
使用Spotify Apps API中内置的搜索功能时没有分页。您可以增加结果数量,使其返回超过50个结果(请参阅the Search page in the documentation),尽管数量有限(目前似乎是200首曲目)。
还有另一种方法,即向Web API执行请求。