Spring DeferredResult进度条

时间:2015-04-28 07:39:55

标签: java jquery spring

我使用Spring deferredResult在客户端 - 服务器之间发出异步请求。我知道使用这种技术的原因恰恰是将客户端 - 服务器之间的请求保持为空闲状态,直到服务器完成作业。

但是我想知道服务器是否有可能让客户知道有多少时间让工作完成。 我希望这些信息能够在客户端提供进度条。

有什么建议吗?

问候。

2 个答案:

答案 0 :(得分:0)

我不相信,因为服务器的第一个响应将是异步调用请求的数据。需要第二次异步调用才能返回一些数据,例如服务器的平均响应时间,但即使这样,服务器也无法确定服务器和客户端之间的延迟时间,服务器只能够确定运行异步请求调用的进程所花费的时间。您可以设置一个取消请求的超时(或至少忽略响应),但这将在客户端。

答案 1 :(得分:0)

我使用 deferredResult 来实现类似的功能。在客户端编写一个javascript方法,它将自己调用一次。 e.g。

function updateDisplay(finished){
    if(!finished){
        $.ajax({
           url:"url to the function",
           success:function(){
              updateDisplay
              this.data: //status
           },
           complete:funtion (){
               updateDisplay(this.data);
           }
        }
    }
 }

通过这种方式,您可以将定期信息从服务器发送到客户端并更新状态。