文档章节

jquery实现多任务

无知有趣
 无知有趣
发布于 2014/06/13 09:23
字数 720
阅读 192
收藏 0
点赞 0
评论 0

在webapp目录下新建3个文件index.html, list.json(模拟查询请求结果)和task.json(模拟任务处理结果),访问index.html。

index.html:

<html>
<head>
<title>jQuery并发任务</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<style type="text/css">
#list td{border:1px solid #C0C0C0;}
#list th{border:1px solid #C0C0C0;background-color:#DCDCDC;}
#list tbody tr:hover{background-color:#e0e9f9;}
</style>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body>

<table width="98%">
  <tr>
    <td align="left">
            并发:<input id="num" value="10" style="width:40px;"/>
     <input type="button" value="开始" id="btnS" onclick="begin();" />
     <input type="button" value="停止" id="btnE" onclick="stop();" disabled="true" />&nbsp;&nbsp;
     <br>
            进度:<span id="speed" style="font-size:200%;color:green;">0</span><span style="font-size:200%;">/</span><span id="total" style="font-size:200%;color:red;">0</span>
    </td>
  </tr>
  <tr>
    <td align="right">
            编号:<input id="taskID" value="" size=14/>
     <input type="button" value="查询" id="btnQ" onclick="query();"  />
    </td>
  </tr>
</table>
<br>

<table id="list" width="98%" cellspacing=0 style="border-collapse:collapse;">
<thead>
  <tr>
    <th nowrap width="5%"  align='center'>序号</th>
    <th nowrap width="15%" align='center'>编号</th>
    <th nowrap width="40%">名称</th>
    <th nowrap>处理结果</th>
  </tr>
</thead>
<tbody id="listB"></tbody>
</table>

</body>
</html>

<script language="javascript">
var tasks = [];     //列表json数组
var speed = 0;      //已完成
var doing = 0;      //处理中
var isStop= false;  //是否停止

function query(){
    $.ajax({
        type:       "POST",
        url:        "list.json",//TODO:列表查询action/a/b!list.action
        data:       "taskID="+$("#taskID").val(),
        dataType:   "json",
        async:      false,
        error:      function(request, msg) {
            alert('无法访问。');
        },
        success:    function(result){
            tasks = result;
            speed = 0;
            doing = 0;
            isStop= false;
            
            $("#speed").text(0);
            $("#total").text(tasks.length);
            $("#btnS").attr("disabled",false);
            $("#btnE").attr("disabled",true);
            
            var trs = "";
            for(var i=0;i<tasks.length;i++){
                trs += "<tr>";
                trs += "<td nowrap align='center'>"+(i+1)+"</td>";
                trs += "<td nowrap align='center'>"+tasks[i].TASK_ID+"</td>";
                trs += "<td nowrap id='vn"+i+"'>"+tasks[i].TASK_NAME+"</td>";
                trs += "<td id='vr"+i+"'></td>";
                trs += "</tr>";
            }
            $("#listB").html(trs);
        }
    });
}

function begin(){
  isStop = false;
  $("#btnS").attr("disabled",true);
  $("#btnE").attr("disabled",false);
  
  var num = Math.min($("#num").val(), tasks.length-doing);
  //遍历列表,发送num个,在每个处理返回结果时再次发送,保证num个处理中,直到结束
  for(var i=0; i<num; i++){
    startTask(doing++);
  }
}
function startTask(idx){
    if(idx >= tasks.length){
        $("#btnS").attr("disabled",true);
        $("#btnE").attr("disabled",true);
        return;
    }
    $.ajax({
        type:       "POST",
        url:        "task.json",//TODO:任务执行action/a/b!task.action
        data:       "pkTask="+tasks[idx].PK_TASK+"&taskID="+tasks[idx].TASK_ID,
        dataType:   "json",
        error:      function(request, msg) {
            $("#vr"+idx).text(msg);
        },
        beforeSend: function(){
            $("#vr"+idx).text("处理中...");
        },
        success:    function(result){
            $("#vr"+idx).text(result);
            
            speed++;
            $("#speed").text(speed);
            
            if(!isStop){
                startTask(doing++);
            }
        }
    });   
}

function stop(){
  isStop = true;
  $("#btnS").attr("disabled",false);
  $("#btnE").attr("disabled",true); 
}
</script>


list.json:

[{"PK_TASK":"1","TASK_ID":"ID-2014-0001","TASK_NAME":"任务1"},{"PK_TASK":"2","TASK_ID":"ID-2014-0002","TASK_NAME":"任务2"},{"PK_TASK":"3","TASK_ID":"ID-2014-0003","TASK_NAME":"任务3"},{"PK_TASK":"4","TASK_ID":"ID-2014-0004","TASK_NAME":"任务4"},{"PK_TASK":"5","TASK_ID":"ID-2014-0005","TASK_NAME":"任务5"},{"PK_TASK":"6","TASK_ID":"ID-2014-0006","TASK_NAME":"任务6"},{"PK_TASK":"7","TASK_ID":"ID-2014-0007","TASK_NAME":"任务7"},{"PK_TASK":"8","TASK_ID":"ID-2014-0008","TASK_NAME":"任务8"},{"PK_TASK":"9","TASK_ID":"ID-2014-0009","TASK_NAME":"任务9"},{"PK_TASK":"10","TASK_ID":"ID-2014-0010","TASK_NAME":"任务10"},{"PK_TASK":"11","TASK_ID":"ID-2014-0011","TASK_NAME":"任务11"},{"PK_TASK":"12","TASK_ID":"ID-2014-0012","TASK_NAME":"任务12"},{"PK_TASK":"13","TASK_ID":"ID-2014-0013","TASK_NAME":"任务13"},{"PK_TASK":"14","TASK_ID":"ID-2014-0014","TASK_NAME":"任务14"},{"PK_TASK":"15","TASK_ID":"ID-2014-0015","TASK_NAME":"任务15"}]


task.json:

"任务处理完成。"


© 著作权归作者所有

共有 人打赏支持
无知有趣
粉丝 13
博文 117
码字总数 33264
作品 0
北京
后端工程师
2011年12月最新JQuery插件汇总

jQuery的工具提示插件 Tipped jQuery表格插件 colResizable jQuery虚拟键盘插件 jQuery keyboard Minimit Gallery 用于显示相册、幻灯片、卷帘等效果 jQuery 幻灯效果显示插件 Diapo jQuery...

晨曦之光
2012/02/24
0
0
20个值得开发人员关注的jQuery技术博客

John Resig - http://ejohn.org 毫无疑问,jQuery的缔造者的博客是你首先必须关注的。 2. Filmament Group Lab 这个也是必看之一,因为jQuery UI类库就出自这个网站。 3. Learning jQuery 老...

李长春
2011/11/14
0
0
19个 jQuery 分页插件和教程,附带实例

在这篇文章中我们将向你介绍 20 个最棒的 jQuery 分页插件以及教程,并提供在线演示。 1.客户端的jQuery 分页插件jPages jPages 是一个客户端的分页插件,但提供很多特性例如自动翻页、键盘和...

凯文加内特
2014/04/30
0
0
30个创意出色的非常实用的jquery框架插件-(视觉大背景,瀑布流效果)

jQuery是在网页设计师和开发者最近的热门话题之一。人们使用它的广泛范围从个人博客到企业网站,目前流行的视觉大背景滚动效果,瀑布流图片阴影效果,图片缩放,动态标签复制,html5音频播放...

易达
2012/08/04
0
0
jQuery.noConflict() 函数详解

jQuery.noConflict()函数用于让出jQuery库对变量$(和变量jQuery)的控制权。 一般情况下,在jQuery库中,变量$是变量jQuery的别名,它们之间是等价的,例如jQuery("p")和$("p")是等价的。由于...

鱼煎
2015/07/20
0
0
从零开始学 Web 之 jQuery(一)jQuery的概念,页面加载事件

大家好,这里是「 从零开始学 Web 系列教程 」,并在下列地址同步更新...... github:https://github.com/Daotin/Web 微信公众号:Web前端之巅 博客园:http://www.cnblogs.com/lvonve/ CSDN...

fengdaoting
07/04
0
0
jQuery精选面试题及答案

1、jQuery的美元符号$有什么作用? 回答:其实美元符号$只是”jQuery”的别名,它是jQuery的选择器,如下代码: Html代码 $(document).ready(function(){ }); 当然你也可以用jQuery来代替$,...

西来飞鸿
2014/09/23
0
2
深入理解javascript系列(十八):掌握面向对象(1)

面向对象,一个老生常谈的话题,但你有没有想过面向对象要解决什么问题? 有一位大神说的很直接,”面向对象要解决的问题,并不是封装、继承和多态,而是写代码的套路“。 我觉得有理,所以简...

Panthon
06/20
0
0
jQuery学习笔记--选择器和事件

以下内容参考 W3school 简书 你要是问我什么是jQuery 那可以这么两句话概括: jQuery 是一个 JavaScript 库。 jQuery 极大地简化了 JavaScript 编程。 要学jQuery最好有点javaScript的基础 ...

codingcoge
05/17
0
0
jQuery数据缓存data(name, value)详解及实现

作为一名程序员,一提到“缓存”你很容易联想到“客户端(浏览器缓存)”和“服务器缓存”。客户端缓存是存在浏览者电脑硬盘上的,即浏览器临时文件夹,而服务器缓存是存在服务器内存中,当然...

i33
2013/03/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Python爬虫 爬取百合网的女人们和男人们

学Python也有段时间了,目前学到了Python的类。个人感觉Python的类不应称之为类,而应称之为数据类型,只是数据类型而已!只是数据类型而已!只是数据类型而已!重要的事情说三篇。 据书上说...

p柯西
8分钟前
0
0
在Java中,你真的会日期转换吗

1.什么是SimpleDateFormat 在java doc对SimpleDateFormat的解释如下: SimpleDateFormatis a concrete class for formatting and parsing dates in a locale-sensitive manner. It allows fo......

Java小铺
17分钟前
0
0
Linux系统梳理---系统搭建(二):tomcat的安装和使用

上一章讲到JDK的安装使用,这一章主要记录下服务器tomcat的安装以及部署一个项目. 1.下载tomcat,这里下载的是apache-tomcat-8.5.32.tar.gz 2.创建文件夹,便于管理,和JDK一样,在usr目录下创建t...

勤奋的蚂蚁
28分钟前
0
0
ES15-聚合

1.Terms Aggregation 分组聚合 2.Filter Aggregation 过滤聚合

贾峰uk
29分钟前
0
0
【2018.07.19学习笔记】【linux高级知识 20.27-20.30】

20.27 分发系统介绍 20.28 expect脚本远程登录 20.29 expect脚本远程执行命令 20.30 expect脚本传递参数

lgsxp
31分钟前
0
0
10.32/10.33 rsync通过服务同步~10.35 screen工具

通过服务的方式同步要编辑配置文件:[root@linux-xl ~]# vim /etc/rsyncd.confport=873log file=/var/log/rsync.logpid file=/var/run/rsyncd.pidaddress=192.168.43.21[tes...

洗香香
35分钟前
0
0
与女儿谈商业模式 (3):沃尔玛的成功模式

分类:与女儿谈商业模式 | 标签: 经济学 沃尔玛 陈志武 2007-05-10 09:09阅读(11279)评论(30) 与女儿谈商业模式 (3):沃尔玛的成功模式 陈志武 /文 沃尔玛(Wal-Mart)是另一个有意思的财...

祖冲之
41分钟前
0
0
网页加载速度优化方法总结

1、减少请求 最大的性能漏洞就是一个页面需要发起几十个网络请求来获取诸如样式表、脚本或者图片这样的资源,这个在相对低带宽和高延迟的移动设备连接上来说影响更严重。 2、整合资源 对开发...

Jack088
47分钟前
0
0
dubbo学习

https://blog.csdn.net/houshaolin/article/details/76408399

喵五郎
59分钟前
0
0
mybatis-session.selectList源码分析

0.构建工厂:SqlSessionFactory 。 new SqlSessionFactoryBuilder.build(配置的xml文件) 获取sqlSession对象 //指定事务隔离级别 1. sqlMapper.openSession(TransactionIsolationLevel.SER......

writeademo
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部