You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

98 lines
4.3 KiB

/*
* @Author: BATU1579
* @CreateDate: 2022-07-12 16:11:48
* @LastEditor: BATU1579
* @LastTime: 2022-09-11 10:51:29
* @FilePath: \\src\\types\\timers.d.ts
* @Description: 定时器模块
*/
declare module 'timers' {
global {
/**
* @description: 预定每隔 `delay` 毫秒重复执行的 `callback` 。
*
* **注意!:**
*
* - 定时器仍然是单线程的。如果脚本主体有耗时操作或死循环,则设定的定时器不能被及时执行。
*
* @param {Function} callback 当定时器到点时要调用的函数。
* @param {number} delay 调用 `callback` 之前要等待的毫秒数。当 `delay` 小于 0 时, `delay` 会被设为 0。
* @param {array} [args] 当调用 `callback` 时要传入的可选参数。
* @return {IntervalID} 返回一个用于 `clearInterval()` 的定时器 id 。
*/
function setInterval(callback: Function, delay: number, ...args: any[]): IntervalID;
/**
* @description: 预定在 `delay` 毫秒之后执行的单次 `callback` 。
*
* **注意!:**
*
* - 定时器仍然是单线程的。如果脚本主体有耗时操作或死循环,则设定的定时器不能被及时执行。
* - `callback` 可能不会精确地在 `delay` 毫秒被调用。 不能保证回调被触发的确切时间,也不能保证它们的顺序。 回调会在尽可能接近所指定的时间上调用。
*
* @param {Function} callback 当定时器到点时要调用的函数。
* @param {number} delay 调用 `callback` 之前要等待的毫秒数。当 `delay` 小于 0 时, `delay` 会被设为 0。
* @param {array} [args] 当调用 `callback` 时要传入的可选参数。
* @return {TimeoutID} 返回一个用于 `clearTimeout()` 的定时器 id 。
*/
function setTimeout(callback: Function, delay: number, ...args: any[]): TimeoutID;
/**
* @description: 预定立即执行的 callback,它是在 I/O 事件的回调之后被触发。
*
* 当多次调用 `setImmediate()` 时, `callback` 函数会按照它们被创建的顺序依次执行。 每次事件循环迭代都会处理整个回调队列。 如果一个立即定时器是被一个正在执行的回调排入队列的,则该定时器直到下一次事件循环迭代才会被触发。
* @param {Function} callback 在 Looper 循环的当前回合结束时要调用的函数。
* @param {array} [args] 当调用 `callback` 时要传入的可选参数。
* @return {ImmediateID} 返回一个用于 `clearImmediate()` 的 id。
*/
function setImmediate(callback: Function, ...args: any[]): ImmediateID;
/**
* @description: 取消一个由 `setInterval()` 创建的循环定时任务。
* @param {IntervalID} id 一个 `setInterval()` 返回的 id。
* @example
* ```typescript
* // 每5秒就发出一次hello
* let id = setInterval(function() {
* toast('hello');
* }, 5000);
* // 1分钟后取消循环
* setTimeout(() => clearInterval(id), 60 * 1000);
* ```
*/
function clearInterval(id: IntervalID | number): void;
/**
* @description: 取消一个由 `setTimeout()` 创建的定时任务。
* @param {TimeoutID} id 一个 `setTimeout()` 返回的 id。
* @example
* ```typescript
* // 每5秒就发出一次hello
* let id = setInterval(function() {
* toast('hello');
* }, 5000);
* // 1分钟后取消循环
* setTimeout(() => clearInterval(id), 60 * 1000);
* ```
*/
function clearTimeout(id: TimeoutID | number): void;
/**
* @description: 取消一个由 `setImmediate()` 创建的定时任务。
* @param {ImmediateID} id 一个 `setImmediate()` 返回的 id。
*/
function clearImmediate(id: ImmediateID | number): void;
}
class ImmediateID extends Number {
private _id: 'ImmediateID';
}
class TimeoutID extends Number {
private _id: 'TimeoutID';
}
class IntervalID extends Number {
private _id: 'IntervalID';
}
}