⚡ 编程实验室🏗️ 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🎮 游戏🏠 网站首页

AbortController 与可读流的优雅取消机制

深入 AbortController 在 Web Streams API 中的应用,实现可读流、fetch 请求及异步迭代器的统一取消。 · 难度:入门 · +10XP

AbortController 与可读流的优雅取消机制

大多数教程仅展示 AbortController 用于取消 fetch,但在 Node.js 中,它能与 ReadableStream、TransformStream 协同工作。核心在于将 signal 传入流的构造函数,使外部能够通过 abort() 触发流内部的错误与清理。本教程演示如何创建一个可中断的异步生成器流,并利用 signal 的 abort 事件安全释放资源,避免内存泄漏。

const { Readable } = require('stream');

function createCancellableStream(signal) { return new Readable({ read(size) { if (signal.aborted) { this.destroy(new Error('cancelled')); return; } // 模拟数据推送 this.push(Buffer.from('data')); }, destroy(err, callback) { if (err) console.log('stream destroyed due to:', err.message); callback(); } }); }

const controller = new AbortController(); const stream = createCancellableStream(controller.signal); setTimeout(() => controller.abort(), 100);

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

🏆 学习排行

加载中...

📊 统计

📖 135 篇
0 完成
🔥 0