⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

EventTarget 自定义事件模拟 Observable 模式

不使用 RxJS,基于 Node.js 的 EventTarget 实现简易的 Observable,支持 map、filter、pipe 操作。 · 难度:入门 · +10XP

EventTarget 自定义事件模拟 Observable 模式

Node.js 15+ 内置了 EventTarget 和 Event 类,使得我们可以用标准浏览器 API 进行事件编程。本教程将 EventTarget 扩展为可链式调用的流式事件处理,通过自定义 CustomEvent 传递数据,实现类似 RxJS 的 map、filter 操作。核心思想是利用事件派发和监听器的组合创建数据管道。

class ObservableEventTarget extends EventTarget {
  pipe(...operations) {
    let source = this;
    for (const op of operations) {
      source = op(source);
    }
    return source;
  }
}

function map(transform) { return (source) => { const target = new ObservableEventTarget(); source.addEventListener('data', (e) => { target.dispatchEvent(new CustomEvent('data', { detail: transform(e.detail) })); }); return target; }; }

// 使用 const source = new ObservableEventTarget(); const pipeline = source.pipe(map(x => x * 2)); pipeline.addEventListener('data', (e) => console.log(e.detail)); source.dispatchEvent(new CustomEvent('data', { detail: 21 })); // 输出 42

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 135 篇
0 完成
🔥 0