JavaScript
发布时间:2022-04-16 发布网站:大佬教程 code.js-code.com
大佬教程收集整理的这篇文章主要介绍了JS+WCF实现进度条实时监测数据加载量的方法详解,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
本文实例讲述了JS+WCF实现进度条实时监测数据加载量的方法。分享给大家供大家参考,具体如下:
背景
由于项目中需要导入大量数据到memcache中
需要用WCF调取11万条数据,由于那边多级联查和排序,所以比较慢(1分钟左右)
同时这边需要对数据进行处理,合并成2万条数据,然后存储,需要一定时间(也是1分钟左右)
总之,完成这个数据导入一共需要1分30秒左右
这时候,需要一个进度条来实时监测完成的数据量
(之前用的是一个动态图,不能知道程序目前的完成量,甚至不知道它是不是卡住了,只能等着)
功能
1.开辟线程,用于加载数据,处理数据
2.前台实时读取后台数据,并显示
代码
view-html
673_30@数据准备
数据准备完成!
view-js
{
$('#initialization').click(function ()
{
$.
messager.confirm('提示','是否要进行数据初始化?',function (r)
{
if (!r)
{
return;
}
else
{
$('#container').show(
);
var t1 = window.se
Tinterval(process_bar,1500
);
}
}
);
}
);
}
);
function process_bar()
{
$.ajax(
{
type: "POST",async: true,url: "/Paper/LoadData",
success: function (result)
{
$('#progress_bar .ui-progress').animateProgress(result
);
if (result =="100")
{
$('#main_content').slideDown(
);
$('#fork_me').fadeIn(
);
setTimeout(function ()
{ $('#container').hide(
);; },1500
);
window.clearInterval(t1
);
}
}
})
}
controller
c int LoadData()
{
int result = Ipaperbl
l.LoadData
amount(
);
if (flag)
{
Thread thread = new Thread(new ThreadStart(ThreadLoadData)
);
thread.Start(
);
flag =
false;
}
return result;
}
private void ThreadLoadData()
{
Ipaperbl
l.initializeData(
);
}
后台
c int load_data_
amount;//当前数据准备量
public bool initializeData()
{
bool flag =
false; //定义返回值
//获得数据
//code....code ....code....
load_data_
amount =
5;//完成工作量
int page = 0;
int amount = 50000;//一次获取数据量不能超过10万
while (page *
amount == list.Count)
{
//code....code ....code....
load_data_
amount = load_data_
amount +
5;
}
load_data_
amount = 50;//读取数据默认的工作量
double @R_939_1
0586@l
amount = list.Count(
);
foreach (var item in list)
{
//code....code ....code....
load_data_
amount = Convert.ToInt32((1 - (@R_939_1
0586@l
amount--) / double.Parse(list.Count().To
String())) * 50) + 50;//根据数据改变的完成工作量
}
load_data_
amount = 100;//完成工作量
flag = true;
return flag;
}
//返回当前准备数据量
publi
c int LoadData
amount()
{
return load_data_
amount;
}
问题 & 解决
1.进度条生成
解决:使用网上的demo,css+js可以动态生成,改变数据即可
2.线程问题
解决:开始是监测使用线程,后来改成处理数据使用线程
3.实时监测问题
解决:处理数据使用线程自动运行,前台使用ajax不断查询后台的一个变量load_data_amount
4.ajax报错问题
注意是返回值的类型,以及是result还是result.d,不同情况下是不一样的
5.数据类型问题
解决:读取数据完成的百分比,是用 完成量/所有量 得到的,这里的数一直算不对,是因为int类型承受不住11万的运算以及之后的小数,用double和float可以
小结
本来想着开个线程,加个变量,返回前台,加一个进度条,读取变量就OK了
但是中间的这个MVC,这个Spring,这个接口,之前的方法各种不好使,以及在它们下面的运算,ajax……一个一个分开解决,最后还是解决了
分而治之,逐个解决,测试就好
另外,框架和合作在带来便利的同时,中间的限制和bug也会让你的效率下降
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》及《》
希望本文所述对大家JavaScript程序设计有所帮助。
大佬总结
以上是大佬教程为你收集整理的JS+WCF实现进度条实时监测数据加载量的方法详解全部内容,希望文章能够帮你解决JS+WCF实现进度条实时监测数据加载量的方法详解所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。