标签: 异步编程
10 个内容
笔记(10)
JavaScript单线程事件循环下,利用Promise/async/await实现并发控制。主要方案:1. Scheduler类(推荐),基于队列+计数器,add任务自动调度max并发;2. asyncPool函数,Set跟踪执行任务+Promise.race限流批处理。核心:闭包劫持、递归触发、错误处理防死锁。
文章解释JavaScript Promise作为状态机特性:状态一旦确定(fulfilled/rejected),多次`await`同一Promise对象均立即返回相同结果,而非重复执行内部逻辑。主要用于异步结果缓存,避免重复请求。示例与注意事项详述错误处理及函数复用场景。
本文深入解析 JavaScript Promise,阐述其作为有限状态机的核心机制、微任务执行原理和链式调用。对比 `all`、`allSettled` 和 `any` 等静态方法,探讨取消模式、内存泄漏规避及性能优化。最后提及 Promise 实现规范和未来演进,强调实践中的最佳策略。
该文探讨Node.js同步/异步文件读取性能差异及阻塞问题。背景:`fs.promises.readFile`比`fs.readFile`慢。问题:同步读取阻塞事件循环,影响并发。方案:避免同步I/O,采用异步方式,如`fs.promises.readFile`,提升服务器并发性能。
本文总结了Node.js开发中的常见问题与技巧。包括:使用`process.hrtime()`进行高精度计时,利用`async_hooks`跟踪异步资源生命周期,以及`cls-hooked`简化上下文管理。讨论了`fs.writeFileSync()`在父目录不存在时报错的解决,PowerShell执行Node程序假死,`globalThis`、`global`和`window`的区别,`ArrayBuffer`和`Uint8Array`,以及`readFile()`和`readFileSync()`的选择。
本文深入解析了 Promise 的三种状态(pending, fulfilled, rejected)、resolve参数的不同类型处理、then/catch/finally方法,以及静态方法 all, allSettled, race, any 的用法。最后,文章还提供了一个 Promise 的简单实现,并简要提及了 postMessage 相关的异步任务执行顺序问题。
本文总结了 RxJS 中 `switchMap`, `mergeMap`, `exhaustMap` 等操作符的区别和使用场景,强调 `switchMap` 的取消特性在 typeahead 场景下的应用。同时,讨论了 Promise 转 Observable 的方法,`endWith` 的用法,以及 `concat` 操作符在处理顺序依赖时的注意事项和 `fromEvent` 的使用限制。