使用难度 | 中低 |
依赖模型 | events |
使用频率 | 低 |
成员类型 | 静态模块 |
Std.holder模块的主要适用于在执行一些任务的时候将其hold住,等待hold的任务全部被释放之后然后再执行某种行为.
该模块用于特殊的异步行为控制.
该模块可以和Std.queue模块做比较,Std.queue模块用于队列方式逐一执行,Std.holder模块用于同时执行多个任务,全部完毕之后再执行最终的操作.
new Std.holder();
new Std.holder(Array holdList);
new Std.holder(Function complete);
名称 | 类型 | 描述 |
holdList | Array | 传递需要hold的函数列表 |
complete | Function | 当任务全部被释放时候执行的方法,如果指定了该参数,相当于直接添加了complete事件 |
名称 | 回调参数 | 描述 | ||||||
hold |
|
添加一个hold任务,在任务被添加之后,实例中的成员变量length值会自增1,并且传递的函数会被立即执行, 同时会触发hold事件,如果需要让该任务完成,需要执行成员方法release | ||||||
release |
|
release方法接收的参数为原始hold时候传递的那个函数, 也就是hold函数中的第二个实参,release方法可以将被hold住的那个任务进行释放, 当所有任务都被释放的时候complete事件会被触发. |
//创建holder实例
var holder = new Std.holder(function(){
//当所有任务被释放的时候的行为
console.log("complete");
});
holder.hold(function(that,handle){
setTimeout(function(){
that.release(handle);
},1000);
});
holder.hold(function(that,handle){
Std.ajax("/robots.txt",function(){
that.release(handle);
});
});