上传进度
TS
Event
ts
interface Event {
readonly type: string; // 事件类型,如 'click'、'progress'
readonly target: EventTarget | null; // 事件触发的对象
readonly currentTarget: EventTarget | null; // 当前正在处理的对象
readonly bubbles: boolean; // 是否冒泡
readonly cancelable: boolean; // 是否可被取消
readonly composed: boolean; // 是否可跨 Shadow DOM 传播
readonly timeStamp: number; // 事件触发的时间戳
readonly isTrusted: boolean; // 是否由浏览器生成(true)或脚本触发(false)
// 方法:
stopPropagation(): void; // 阻止冒泡
stopImmediatePropagation(): void; // 阻止当前事件的进一步执行(包括同级监听器)
preventDefault(): void; // 阻止默认行为(前提:cancelable = true)
// 事件初始化方法(旧标准)
initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;
}ProgressEvent
ts
interface ProgressEvent<T extends EventTarget = EventTarget> extends Event {
readonly lengthComputable: boolean;
readonly loaded: number;
readonly total: number;
readonly target: T | null;
}| 属性名 | 类型 | 说明 |
|---|---|---|
lengthComputable | boolean | 是否能计算进度(即 total 是否有效) |
loaded | number | 已经传输的字节数 |
total | number | 总字节数(若 lengthComputable 为 false,则可能为 0) |
target | `XMLHttpRequestEventTarget | null` |
AxiosProgressEvent
ts
export interface AxiosProgressEvent {
loaded: number
total?: number
progress?: number // 自动计算的进度(0 ~ 1)
bytes?: number // 本次上传的字节数(部分浏览器支持)
estimated?: number // 预计剩余时间(仅 Node 支持)
rate?: number // 速率(bytes/s)
upload?: boolean // 是否为上传事件
event?: ProgressEvent // 原生事件对象
}