首页 > 代码库 > javascript延迟对象
javascript延迟对象
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 > 0 && !isRun) { isRun = true; run(taskList.shift()); } }, 100);}
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 =http://www.mamicode.com/ function (url) { return $.ajax({ type: ‘get‘, url: url });}fetchData() //执行函数返回一个Deferred对象实例 .done() //接受一个函数,ajax请求成功调用 .fail() //接受一个函数,ajax请求失败调用 .done() //第二个成功状态的回调方法 .fail()
javascript延迟对象
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。