1、模拟任务队列:
function taskQueue() {
var taskList = [];
var isRun = false; this.addTask = function (task) {
task.status = 'waiting';
taskList.push(task);
}; function run(task) {
if (!task.validate()) {
task.status = 'invalidate';
isRun = false;
return;
}
function endWrap() {
if(task.end) task.end.apply(task,arguments);
task.status = 'done';
isRun = false;
};
task.status = 'running';
if (task.isAsyn) {
if(task.begin) task.begin();
task.run(endWrap);
}
else {
if(task.begin) task.begin();
task.result = task.run();
endWrap();
}
} setInterval(function () {
if (taskList.length > && !isRun) {
isRun = true;
run(taskList.shift());
}
}, );
}

task增加一个validate方法,用于检测此时是否有必要再执行先前已入队列的任务。task增加了begin的方法,这是供该task被执行时可以被回调,增加了result属性,如果是同步的task,被执行时可以得到返回值。如果是异步endWarp作为callback传入。至于异常,只能task自己去保证不会抛出异常,否则这个队列会一直阻塞。

2、在jquery 1.5 版本之后,ajax请求的内部实现被重写。$.ajax方法返回的不再是一个jqXHR对象,而是一个Deferred对象。可以使用$.Deferred对象的api进行一些异步操作。
主要包括.done.fail.then,.pipe$.when方法。
var fetchData = function (url) {
return $.ajax({
type: 'get',
url: url
});
}
fetchData() //执行函数返回一个Deferred对象实例
.done() //接受一个函数,ajax请求成功调用
.fail() //接受一个函数,ajax请求失败调用
.done() //第二个成功状态的回调方法
.fail()

最新文章

  1. 遇到 HTTP 错误 403.14 - Forbidden?
  2. angular使用echarts折线图
  3. 【转】mac os 安装php
  4. 玩转Django的POST请求 CSRF
  5. ASP.NET中进行消息处理(MSMQ) 一(转)
  6. 电脑远程工具:mstsc
  7. Ansible安装配置Nginx
  8. liger 的 ligerDialog 的使用。
  9. <td style="word-break:break-all"> 在html中控制自动换行
  10. Struts2国际化信息机制
  11. java虚拟机内存区域
  12. 工具(4): Git自助手册
  13. 对.zip格式的文件进行解压缩
  14. Deepin或者Ubuntu上永久配件navicat
  15. 一个ner的bug
  16. 流媒体技术学习笔记之(六)FFmpeg官方文档先进音频编码(AAC)
  17. hadoop 文件合并
  18. discuz回贴通知插件实现-插件的多语言
  19. 剑指offer四十七之求1+2+3+...+n
  20. 批量管理增量日志(seek、tell)

热门文章

  1. 3ds Max学习日记(八)
  2. cacti 添加mysql 监控 (远程服务器)
  3. jquery计算器(改良版)
  4. Android基础------Intent组件
  5. 进程池-限制同一时间在CPU上运行的进程数
  6. [洛谷P5075][JSOI2012]分零食
  7. Android Fragment 使用详解
  8. POJ3090:Visible Lattice Points——题解
  9. HDOJ.2187 悼念512汶川大地震遇难同胞——老人是真饿了(贪心)
  10. warning: React does not recognize the xxx prop on a DOM element