首页 > 解决方案 > reactJS/Axios 以及使用 Streams 处理较长的响应时间可能吗?

问题描述

我有 Java spring-boot 后端和一些数据端点。

其中之一是POST使用 axios 的参数很少。这里的问题是请求需要很长时间才能完全完成并从服务器端发送。POST需要在应用程序内部进行剖析和参数转发,然后计算响应。

我返回一个List<Object>(需要事先排序)

列表的第一部分将在几秒钟内准备好,但获取整个列表需要几分钟甚至几十分钟,具体取决于发送的参数。

所以第一个问题是 Axios 抛出network error,我认为这是因为响应时间很长。(使用较短的查询时它会消失)第二个问题是应用程序似乎对除开发人员之外的任何人都没有响应。

有没有办法使用某种 Java Stream 类型的解决方案在等待其余部分的同时发送响应的第一部分?或者可能是某种分页解决方案?

我已经用谷歌搜索了一段时间,但还没有找到任何好的解决方案来解决这个问题。

这是控制器的一部分供参考:

 @RequestMapping(value = "/contracts", method = RequestMethod.POST)
 public String Contracts(@RequestBody String req)  throws JsonProcessingException {

    //omitting parse JSON params from req string

    ObjectMapper objectMapper = new ObjectMapper();
    return objectMapper.writeValueAsString(DateRange.getDataForDateRange(param1, param2, param3));
}

我知道这是一个广泛的问题,但了解这样做背后的方式或技术对我所做的一切都非常有益:)

谢谢!

标签: javareactjsrestspring-bootaxios

解决方案


苏终于得到了我的答案。

用名为DeferredResult的 java 类找到了我的答案

我不知道为什么,但似乎你再也找不到SO 中非常基础和明显的东西更难的问题的答案了......

这是我经过几天研究后回答自己的第 n 个问题。


推荐阅读