标签: 异步编程

10 个内容

笔记(10)

JavaScript单线程事件循环下,利用Promise/async/await实现并发控制。主要方案:1. Scheduler类(推荐),基于队列+计数器,add任务自动调度max并发;2. asyncPool函数,Set跟踪执行任务+Promise.race限流批处理。核心:闭包劫持、递归触发、错误处理防死锁。

Elliot Yang·
6 浏览

文章解释JavaScript Promise作为状态机特性:状态一旦确定(fulfilled/rejected),多次`await`同一Promise对象均立即返回相同结果,而非重复执行内部逻辑。主要用于异步结果缓存,避免重复请求。示例与注意事项详述错误处理及函数复用场景。

Elliot Yang·
56 浏览

竞态问题源于异步操作完成顺序不确定。RxJS用流式编程和操作符(switchMap, concatMap等)控制异步流程,但学习曲线陡峭。@tanstack/query通过queryKey自动合并请求、取消和缓存,声明式API更易上手,擅长服务端状态同步。混合架构结合两者优势,性能优化和错误处理至关重要。

Elliot Yang·
138 浏览

本文深入解析 JavaScript Promise,阐述其作为有限状态机的核心机制、微任务执行原理和链式调用。对比 `all`、`allSettled` 和 `any` 等静态方法,探讨取消模式、内存泄漏规避及性能优化。最后提及 Promise 实现规范和未来演进,强调实践中的最佳策略。

Elliot Yang·
86 浏览

Node.js核心机制包括高精度计时(process.hrtime),异步资源追踪(async_hooks)和上下文管理(AsyncLocalStorage)。文件系统操作需注意同步写入风险。PowerShell假死问题可通过检查事件循环和缓冲机制解决。了解全局对象差异,掌握二进制数据处理技巧,结合性能分析工具和安全措施,能构建高性能Node.js应用。

Elliot Yang·
108 浏览

Node.js同步I/O阻塞主线程,异步I/O利用libuv线程池。流式读取I/O性能最佳,Promise存在内存合并损耗。工程实践中,I/O密集型场景用异步流,CPU密集型用Worker Threads。同步I/O适于启动阶段。需警惕Promise陷阱和内存泄漏,并监控事件循环延迟。

Elliot Yang·
98 浏览

该文探讨Node.js同步/异步文件读取性能差异及阻塞问题。背景:`fs.promises.readFile`比`fs.readFile`慢。问题:同步读取阻塞事件循环,影响并发。方案:避免同步I/O,采用异步方式,如`fs.promises.readFile`,提升服务器并发性能。

Elliot Yang·
141 浏览

本文总结了Node.js开发中的常见问题与技巧。包括:使用`process.hrtime()`进行高精度计时,利用`async_hooks`跟踪异步资源生命周期,以及`cls-hooked`简化上下文管理。讨论了`fs.writeFileSync()`在父目录不存在时报错的解决,PowerShell执行Node程序假死,`globalThis`、`global`和`window`的区别,`ArrayBuffer`和`Uint8Array`,以及`readFile()`和`readFileSync()`的选择。

Elliot Yang·
110 浏览

本文深入解析了 Promise 的三种状态(pending, fulfilled, rejected)、resolve参数的不同类型处理、then/catch/finally方法,以及静态方法 all, allSettled, race, any 的用法。最后,文章还提供了一个 Promise 的简单实现,并简要提及了 postMessage 相关的异步任务执行顺序问题。

Elliot Yang·
96 浏览

本文总结了 RxJS 中 `switchMap`, `mergeMap`, `exhaustMap` 等操作符的区别和使用场景,强调 `switchMap` 的取消特性在 typeahead 场景下的应用。同时,讨论了 Promise 转 Observable 的方法,`endWith` 的用法,以及 `concat` 操作符在处理顺序依赖时的注意事项和 `fromEvent` 的使用限制。

Elliot Yang·
121 浏览