0

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

谢谢鲍勃

4

1 回答 1

0

使用 Spotify Apps API 中内置的搜索功能时没有分页。您可以增加结果的数量,使其返回 50 多个结果(请参阅文档中的搜索页面),尽管数量有限(目前似乎是 200 个曲目)。

还有一种替代方法,它改为执行对Web API的请求。

于 2013-03-20T08:24:14.093 回答