js异步任务:多次触发异步任务时,只留最后一个结果
在 JavaScript 异步编程中,处理多个异步任务并统一管理任务状态是常见需求。本文将介绍一个经过优化的 AsyncTaskProcessor
类,通过简洁的代码实现异步任务的延迟监控、结果聚合及回调管理,帮助开发者更高效地处理异步场景。
一、核心代码:极简异步任务处理器
class AsyncTaskProcessor {
constructor(asyncTask) {
this.asyncTask = asyncTask; // 传入的异步任务函数
this.resetState(); // 初始化状态
}
resetState() {
this.maxDelay = 0; // 最大延迟时间
this.maxDelayResult = null; // 最大延迟任务的成功结果
this.maxDelayError = null; // 最大延迟任务的错误
this.allTasksCount = 0; // 总任务数
this.completedTasksCount = 0; // 已完成任务数
}
createTask() {
return async (...args) => {
// 生成包装后的异步任务
const [value, delay] = args; // 解构参数(任务值、延迟时间)
this.allTasksCount++; // 任务计数+1
try