我对搜索功能在 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 吗?
谢谢鲍勃