栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在进程运行时更新网页

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在进程运行时更新网页

Web服务器无法将未经请求的数据推送到客户端。他们服从请求-响应周期。另一种方法是使用消息队列,但会大大增加复杂性。

从客户端轮询还不错。Web服务器擅长处理许多短请求,并且2到3秒的轮询间隔应该足够快。

这是我喜欢使用的一种轮询方法。它异步等待响应返回,然后再次轮询(需要jQuery):

function poll(url, task, progressBar, resultsCallback,         timeoutMillis, pollIntervalMillis) {    $.ajax({        url: url,        type: 'GET',        dataType: 'json',        timeout: timeoutMillis,        data: 'action=poll&task='+task,        success: (function(response, status, xhr) { if ('progress' in response) {     // update the UI with the progress     progressBar.setValue(response.progress); } if ('status' in response) {     if (response.status == 'pending') {         // task is not finished, continue polling         setTimeout((function() {  poll(url, task, progressBar, resultsCallback,timeoutMillis, pollIntervalMillis);         }), pollIntervalMillis);     }     else {         // task completed         if (response.status == 'cancelled') {  progressBar.setColor('red');  progressBar.setText("Task '"+task+"' was cancelled");         }         else {  progressBar.setColor('green');  progressBar.setText("Task '"+task+"' complete");         }         // GET the results         $.ajax({  url: url,  type: 'GET',  timeout: timeoutMillis,  data: 'action=results&task='+task,  success: (function(response, status, xhr) {      resultsCallback(response, status, xhr);  }),  error: error         });     } }        }),        error: error    });    function error(xhr, status, err) {        alert('Failure to communicate with server: ' + status + ', ' + err);    }}

并且您的服务器端代码应使用以下内容响应轮询:

{"progress" : 42, "status" : "pending"}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394761.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号