【问题标题】:Spring DeferredResult progress barSpring DeferredResult 进度条
【发布时间】:2015-04-28 07:39:55
【问题描述】:

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

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

有什么建议吗?

问候。

【问题讨论】:

    标签: java jquery spring


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我将 deferredResult 用于类似的功能。在客户端编写一个 javascript 方法,该方法将调用自身一次。例如

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

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

      【讨论】:

      • deferredResult 检查完成的工作是由多个异步请求完成的,所以我认为确定进度并不容易。而且我认为我想要实现的目标有点矫枉过正,但谢谢!。
      猜你喜欢
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 2012-12-12
      • 2015-04-16
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多