先看代码
var totieSize=0;//全部变量, 邮件总大小
var infoSize=0;//全局变量,单封邮件大小累计
function getData(){} //异步请求,获取totieSize,infoSize 原本用意: do{ var id=settimeout("getData()",2000)}
while(totieSize==infoSize)
{ clearTimeout(id) }
经过测试,下面这段代码直接导致浏览器瘫痪,这也是意料之中的事,
可是我希望当 settimeout定时的时候,整个Javasxript也都处于挂起中,这样顺利实现outlook接收实时接收邮件,实时显示邮件的效果了,可是 偏偏javasxript在我手里做不到这点。 请求给位高手,帮我想个好的javasxript编写思路 !!
var totieSize=0;//全部变量, 邮件总大小
var infoSize=0;//全局变量,单封邮件大小累计
function getData(){} //异步请求,获取totieSize,infoSize 原本用意: do{ var id=settimeout("getData()",2000)}
while(totieSize==infoSize)
{ clearTimeout(id) }
经过测试,下面这段代码直接导致浏览器瘫痪,这也是意料之中的事,
可是我希望当 settimeout定时的时候,整个Javasxript也都处于挂起中,这样顺利实现outlook接收实时接收邮件,实时显示邮件的效果了,可是 偏偏javasxript在我手里做不到这点。 请求给位高手,帮我想个好的javasxript编写思路 !!
1.第二次获取,最好在上次请求完成的情况下进行。你现在每2000ms请求一次,你保证异步的数据在2000ms完成?
2.定义一个全局请求锁,避免多次重复请求.否则你可以无限次刷然后你机子不挂算牛了.
...大约这些。。个人见解
{ clearTimeout(id) }
应不会执行,明显会死循环
// 获得数据的逻辑,假如获得数据这里有个变量b=true
if(!b){
setTimeout(getDate,2000);
}
}
while(totieSize==infoSize)//totieSize==infoSize是死循环,所以会导致浏览器崩溃!