首页 教程 API文档

holder模块

2015-09-09 16:17:09

属性


使用难度 中低
依赖模型 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
类型 描述
Object this对象
Function 执行hold任务的时候传递的函数
添加一个hold任务,在任务被添加之后,实例中的成员变量length值会自增1,并且传递的函数会被立即执行, 同时会触发hold事件,如果需要让该任务完成,需要执行成员方法release
release
类型 描述
Function 执行hold任务的时候传递的函数
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);
    });
});