我用js写了个轮询,再怎么写可以让它在条件下停止啊,高手来帮帮啊

JavaScript019

我用js写了个轮询,再怎么写可以让它在条件下停止啊,高手来帮帮啊,第1张

用clearInterval,如下

$(document).ready(function(){

c = setInterval(checkIsExist,10000)//每10秒执行一次checkIsExist方法

})

function checkIsExist(){

$.ajax({

type: "POST",

url: "/SecondServlet",

data: "date="+new Date(),

success: function(rtmsg){

if(rtmsg == 'exist'){

$("#download").html("<button onclick=\"window.open('/ArticleServlet')\">下载</button>")

window.clearInterval(c)

}

}

})

}

/*

循环函数:

参数:

circleArray:循环数组

padding:舍弃时计数单位(如:3表示逢3舍弃)

index:循环开始索引(默认为0)

*/

function circle(circleArray, padding,index) {

var arrayReturn = []

var indexPlus = index

for (var i = 0i <circleArray.lengthi++) {

if ((i >0) &&((i + indexPlus) % padding >0)) {

arrayReturn.push(circleArray[i])

}

index = (i + indexPlus) % padding

}

if (arrayReturn.length >1) {

return circle(arrayReturn, padding, index)

}

else if (arrayReturn.length == 1) {

return arrayReturn[0]

}

else {

return circleArray[0]

}

}

/*

获取数组函数:

参数:

max:数组中最大的数值(从1到max)

*/

function getArray(max) {

var array = []

for (var i = 1i <= maxi++) {

array.push(i)

}

return array

}

var last= circle(getArray(100), 3, 0);//last就是最后的那个数

主要介绍其中的五种实现方式:短轮询、Comet、Flash XMLSocket、Server-sent、WebSocket

1、短轮询

指在特定的的时间间隔(如每10秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客户端的浏览器。浏览器做处理后进行显示。无论后端此时是否有新的消息产生,都会进行响应

2、Comet

包括了长轮询和长连接,长轮询是客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求;长连接是在页面中的iframe发送请求到服务端,服务端hold住请求并不断将需要返回前端的数据封装成调用javascript函数的形式响应到前端,前端不断收到响应并处理

3、Flash XMLSocket

在 HTML 页面中内嵌入一个使用了 XMLSocket 类的 Flash 程序。JavaScript 通过调用此 Flash 程序提供的socket接口与服务器端的socket进行通信。JavaScript 在收到服务器端以 XML 格式传送的信息后可以很容易地控制 HTML 页面的内容显示

4、Server-sent

服务器推指的是HTML5规范中提供的服务端事件EventSource,浏览器在实现了该规范的前提下创建一个EventSource连接后,便可收到服务端的发送的消息,实现一个单向通信。客户端进行监听,并对响应的信息处理显示

5、WebSocket

WebSocket是HTML5下一种新的协议,是基于TCP的应用层协议,只需要一次连接,便可以实现全双工通信,客户端和服务端可以相互主动发送消息。客户端进行监听,并对响应的消息处理显示

针对自己系统的应用场景选择合适的推送方案才是合理的,因此最后简单说一下实现个性化推送的两种方式。第一种很简单,直接使用第三方实现的推送,无需复杂的开发运维,直接可以使用。第二种就是自己封装,可以选择如今较为火热的WebSocket来实现系统的推送。

关于第三方推送平台,极光推送,操作简单,稳定性高,送达率快