复杂程度 | 中 |
依赖模型 | events |
使用频率 | 中高 |
成员类型 | 静态模块 |
Std.queue是一个队列模块,通常情况下该模块都用于处理与异步相关的操作,该模块可以让函数组成一个队列,让队列中的函数逐个执行.
方法名称 | 成员类型 | 描述 |
pos | public | 当前队列任务的位置索引号 |
length | protected | 当前队列的长度 |
prev | public | 执行上一个队列任务 |
next | public | 执行下一个队列任务 |
done | public | 完成当前任务并执行下一个 |
has | public | 判断是否存在指定任务 |
merge | public | 合并当前队列 |
jump | public | 跳到队列中指定位置的任务 |
exec | public | 执行队列中所有任务 |
push | public | 添加队列任务 |
remove | public | 移除任务 |
clear | public | 清空任务队列 |
complete | public | 队列任务全部完成 |
start | public | 开始执行队列中的任务 |
error | public | 任务发生错误 |
new Std.queue();
new Std.queue(Array tasks);
new Std.queue(Object option);
名称 | 类型 | 描述 |
tasks | Array | 包含需要执行的任务函数的数组,该数组中的所有任务函数将会被添加到队列中 |
option | Object | Std.queue模块的参数选项 |
名称 | 类型 | 默认值 | 描述 |
timeout | Number | 0 | timeout参数规定队列在执行多少秒之后超时,触发timeout事件,默认为0,永不超时 |
interval | Number | 0 | interval参数规定在重试时候的间隔时间,如果为数字,则为毫秒,可以传递一个带有时间单位的字符串(见Std.convert.timeUit) |
tasks | Array | null | 队列中的函数列表 |
on | Object | null | 该参数规定默认需要绑定的事件. |
名称 | 回调参数 | 描述 | ||||||
error |
|
当重试指定次数之后仍然失败,就会触发error事件. | ||||||
complete | complete事件的参数为最后一次执行next方法时候传递的参数. | complete事件为当任务全部执行完毕之后触发的事件. | ||||||
jump |
|
当任务跳到一个位置时候触发的事件. | ||||||
start | 无 | 当执行start任务的时候触发的事件. | ||||||
timeout | 无 | 超时时候触发的事件 |
//创建一个队列的模块实例,并且增加3个队列函数
var queue = new Std.queue([
function(urlAddress){
Std.ajax.get(urlAddress,function(){
//当请求成功之后,执行下一个任务
queue.next("/index.php");
})
},
function(urlAddress){
Std.ajax.get(urlAddress,function(responseText){
//当请求成功之后,执行下一个任务
queue.next(responseText);
}).error(function(){
//如果ajax请求错误,重试,最大重试4次,如果4次都失败了,继续执行下一个
queue.retry(4,[urlAddress],function(){
queue.next("failed");
});
});
},
function(responseText){
setTimeout(function(){
console.log(responseText)
queue.next();
},500);
}
]);
//添加complete事件,待队列全部完成之后触发
queue.on("complete",function(){
console.log("complete");
});
//开始队列任务,从0开始,传递一个参数
queue.start("/robots.txt");
var queue = new Std.queue();
queue.push(function(urlAddress){
Std.ajax.get(urlAddress,function(){
//当请求成功之后,执行下一个任务
queue.next("/index.php");
})
}).push(function(urlAddress){
Std.ajax.get(urlAddress,function(responseText){
//当请求成功之后,执行下一个任务
queue.next(responseText);
}).error(function(){
//如果ajax请求错误,重试,最大重试4次,如果4次都失败了,继续执行下一个
queue.retry(4,[urlAddress],function(){
queue.next("failed");
});
});
}).push(function(responseText){
setTimeout(function(){
console.log(responseText)
queue.next();
},500);
});
//添加complete事件,待队列全部完成之后触发
queue.complete(function(){
console.log("complete");
});
//开始队列任务,从0开始,传递一个参数
queue.start("/robots.txt");