如何使用Javascript从API获得大响应的一部分?

时间:2019-01-10 23:06:36

标签: javascript wordpress asynchronous lazy-loading

我有一个很大的API请求,这给了我大约1000个结果。由于此请求太大,我需要将响应分成几个部分,因此速度更快。我想查询1000个结果,但是像客户端

一样流式传输数据

在API请求中,您不允许放置任何参数,因此您可以检索全部帖子。响应是一个与Wordpress基本相同的JSON(但不是Wordpress)

我已经尝试了10到10个结果中的相同请求,但是我必须做几次查询才能实现预期的行为。

我想从1000个结果中获得一个请求。

    fetch(api)
    .then((data) => ...)
    .then((data) => {
        //When loaded first 10 records show
        //When loaded next 10 records show
        ...
        // Until the 1000
    })

有什么办法可以实现?

3 个答案:

答案 0 :(得分:0)

后端可以通过多种方式实现流/分页,而JS的答案取决于您查询的后端支持哪种方式。

  • 通过请求参数分页
  • HTTP范围请求(如何在允许搜索的情况下流式传输在线电影)
  • Websocket流式传输(网络游戏如何在玩家获得实时更新的地方工作)

由于您提到要在评论中查询Wordpress,因此在此我将举一个Wordpress示例,但是其他API可能具有不同的处理流/分页方式。

WordPress API支持分页,如下所示:

https://developer.wordpress.org/rest-api/using-the-rest-api/pagination/

您需要做的是专门请求具有偏移量的页面以获取那部分结果,例如:

 /wp/v2/posts?per_page=100&offset=1000

这将获得帖子#1000之后的帖子列表,其中每个页面有100个结果。

对于其他API,您需要为我们提供更多详细信息,以确定如何流式传输结果。

答案 1 :(得分:0)

了解您如何获得结果非常重要。例如,如果您正在使用流式传输,则数据是同时传输的,您将不必处理此类问题。

您可以在下面的链接中查看后端数据流。

  

WebSocket协议使Web客户端(例如浏览器)与Web服务器之间的交互具有较低的开销,从而促进了往返于服务器的实时数据传输

Reference

答案 2 :(得分:0)

最后,我所做的工作是在不同页面的许多查询中检索到的,数据表是使用来自新查询的新记录逐渐更新的