简易的lazyman实现
来源:互联网 发布:王吴悠是什么梗 知乎 编辑:程序博客网 时间:2024/06/07 15:27
function LazyManHocks(name){
this.tasks=[];
var self=this;
var fun=(function(n){
return function(){
var name=n;
console.log("Hi,This is "+name);
self.next();
}
})(name)
this.tasks.push(fun);
setTimeout(function(){
self.next();
},0);
}
LazyManHocks.prototype.next=function(){
var fun=this.tasks.shift();
fun && fun();
return this;
}
LazyManHocks.prototype.eat=function(food){
var self=this;
var fun=(function(food){
return function(){
console.log("I just eat "+food);
self.next();
}
})(food)
this.tasks.push(fun);
return this;
}
LazyManHocks.prototype.sleep=function(time){
var self=this;
var fun=(function(time){
return function(){
setTimeout(function(){
console.log("I sleep "+time+"seconds");
self.next();
},time*1000);
}
})(time)
this.tasks.push(fun);
return this;
}
function LazyMan(name){
return new LazyManHocks(name);
}
LazyMan("kasol").eat("pizza").eat("cake").sleep(5);
//执行结果
大概思想就是将要执行的动作放在一个队列里面, LazyManHocks很重要,里面的关键就是
setTimeout(function(){
self.next();
},0);
这句话保证了所有动作进入队列后才执行异步队列里的next方法,还值得注意的就是this的指向,这里用到了闭包,所以需要将this赋值给self,保证在调用next方法的时候,里面的this指向LazyManHocks的实例而不是window
0 0
- 简易的lazyman实现
- Promise实现的lazyman
- js实现lazyMan
- 微信LazyMan笔试题的深入解析和实现
- LazyMan
- Lazyman
- LazyMan深入解析和实现
- js实现lazyman(流程控制)
- LazyMan深入解析和实现
- 微信LazyMan笔试题的深入解析和实现_0
- 简易计算器的实现
- 简易栈的实现
- 简易的文本实现
- 简易电子词典的实现
- 简易动画的实现
- vector的简易实现
- ASSERT的简易实现
- 进度条的简易实现
- mysql蠕虫复制
- 优先级
- 使用Python通过win32 COM实现Excel的写入与保存
- Qt---log日志框架(2)从性能考虑文件操作
- IE与其他浏览器的区别
- 简易的lazyman实现
- windows向virtualbox上的Linux系统传文件
- 面向对象编程的几个原则
- 面试笔试算法系列之分治法
- PAT 乙等 1024 科学记数法 C语言
- SonicOperator之相关工作2
- 应用调试之使用gdb和gdbserver
- leetcode没做出来看答案的题
- 0508-a标签的伪类选择器