AjaxPro.2.dll究竟是不是异步调用?为什么浏览器会假死?
时间:2007-04-25
来源:互联网
我在项目中使用了AjaxPro.2.dll,在首页每隔5秒取在线人数,每隔半分钟刷新待办工作量。
下面是后台方法:
[AjaxPro.AjaxMethod]
public string GetOnlineCount()
{
//取在线人数
}
[AjaxPro.AjaxMethod]
public string GetWaitWork()
{
//从数据库取登录用户的新邮件、待办工作等
}
客户端:
function setOnlineCount()
{
var onlineCount;
try
{
onlineCount = PageView_V_Top.GetOnlineCount().value;
}
catch(err){}
if(onlineCount == null)
{
window.clearTimeout(timerOnlineCount);
window.clearTimeout(timerWaitWork);
window.top.location = "login.htm ";
return false;
}
document.all.onlineCount.innerText = onlineCount;
timerOnlineCount = setTimeout(setOnlineCount, 5000);
}
function setWaitWork()
{
var waitWork;
try
{
waitWork = PageView_V_Top.GetWaitWork().value;
}
catch(err){}
if(waitWork == null)
{
window.clearTimeout(timerOnlineCount);
window.clearTimeout(timerWaitWork);
window.top.location = "login.htm ";
return false;
}
document.all.waitWork.innerText = waitWork;
timerWaitWork = setTimeout(setWaitWork, 30000);
}
然后将body的onload设置为 "setOnlineCount();setWaitWork(); "
我的问题是,当待办工作量较多时,大约半分钟浏览器就要假死一会儿,到网上查了一下,好像说是异步方法不会出现假死情况,难道AjaxPro.2.dll不是异步调用吗?
另外这样调用后台方法的返回值偶尔会出现null,虽然这种情况比较少,但是为什么呢?
急盼赐教。
下面是后台方法:
[AjaxPro.AjaxMethod]
public string GetOnlineCount()
{
//取在线人数
}
[AjaxPro.AjaxMethod]
public string GetWaitWork()
{
//从数据库取登录用户的新邮件、待办工作等
}
客户端:
function setOnlineCount()
{
var onlineCount;
try
{
onlineCount = PageView_V_Top.GetOnlineCount().value;
}
catch(err){}
if(onlineCount == null)
{
window.clearTimeout(timerOnlineCount);
window.clearTimeout(timerWaitWork);
window.top.location = "login.htm ";
return false;
}
document.all.onlineCount.innerText = onlineCount;
timerOnlineCount = setTimeout(setOnlineCount, 5000);
}
function setWaitWork()
{
var waitWork;
try
{
waitWork = PageView_V_Top.GetWaitWork().value;
}
catch(err){}
if(waitWork == null)
{
window.clearTimeout(timerOnlineCount);
window.clearTimeout(timerWaitWork);
window.top.location = "login.htm ";
return false;
}
document.all.waitWork.innerText = waitWork;
timerWaitWork = setTimeout(setWaitWork, 30000);
}
然后将body的onload设置为 "setOnlineCount();setWaitWork(); "
我的问题是,当待办工作量较多时,大约半分钟浏览器就要假死一会儿,到网上查了一下,好像说是异步方法不会出现假死情况,难道AjaxPro.2.dll不是异步调用吗?
另外这样调用后台方法的返回值偶尔会出现null,虽然这种情况比较少,但是为什么呢?
急盼赐教。
作者: camin 发布时间: 2007-04-25
你这样使用的是同步调用的方式,不是异步调用,要用异步调用,要这样写:
function setOnlineCount()
{
PageView_V_Top.GetOnlineCount(GetOnLineCountCallBack);
}
写一个回调函数:
function GetOnLineCountCallBack(res)
{
onlineCount = res.value;
}
这样就是异步调用了~~我开始的时候也是为这个头痛了一下哦
function setOnlineCount()
{
PageView_V_Top.GetOnlineCount(GetOnLineCountCallBack);
}
写一个回调函数:
function GetOnLineCountCallBack(res)
{
onlineCount = res.value;
}
这样就是异步调用了~~我开始的时候也是为这个头痛了一下哦
作者: linsoo 发布时间: 2007-04-26
同意楼上的
作者: cloudy8 发布时间: 2008-03-19
同意,要先搞清楚同步异步的调用方式是不同的,你可以看看commom.ashx文件就知道了
作者: cloudy8 发布时间: 2008-04-20
我顶~
作者: w395115323 发布时间: 2011-02-18
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28