连续 setTimeout:
setTimeout(doSomething, 1000);
setTimeout(doSomething, 2000);
setTimeout(doSomething, 3000);
的替代方案。
var delay = new Delay();
delay.add(1000, doSomething);
delay.add(2000, doSomething);
delay.add(3000, doSomething);
delay.run(onFinishAll, context);
- 全程单个 setTimeout 执行
- 执行前支持根据 taskId 删除已添加任务
- 支持全局暂停, 继续, 销毁任务的操作
var delay = new Delay
初始化一个 Delay 实例。
var taskId = delay.add(1000, doSomething[ ,context])
新建定时任务,这里就是 1秒后执行 doSomething,context 为可选参数,为 doSomething 执行时的上下文,这里的 doSomething 可以是给某元素增加 class 或者 删除 class,返回任务 ID。
delay.remove(taskId);
执行前可以根据 ID 删除已注册任务。
delay.run(onAllTasksFinished[ ,context]);
执行延时任务,并设置完成回调。其中 context 参数可选,为当前回调函数的上下文,默认为 Delay 实例。
delay.pause();
暂停当前延时队列的执行。
delay.cont();
暂停后继续执行当前延时队列。
delay.destroy();
销毁当前延时队列。
采用 MIT 协议开源,have fun。