spawn 找不到命令时为什么触发 error,try/catch 能接住吗?
区分 spawn 的参数校验异常、异步启动失败和程序非零退出,解释 ENOENT 的命令与 cwd 来源,并用 Promise 包装示例展示及时监听 error 以及只结算一次的调用接口。
Node.js · 异步编程面试题第 1 页,显示第 1–38 题,共找到 38 道完整解析,可继续按分类、标签与关键词缩小范围。
按稳定语义路径排序
区分 spawn 的参数校验异常、异步启动失败和程序非零退出,解释 ENOENT 的命令与 cwd 来源,并用 Promise 包装示例展示及时监听 error 以及只结算一次的调用接口。
Node.js 的 spawn 与 exec 有什么区别,怎么选择? 本文先给出可直接复述的结论,再用最小代码说明child_process spawn exec 区别的工作方式、判断依据、项目边界和常见误区。
在 Worker 线程中 AsyncLocalStorage 等异步上下文能否跨线程传递? 本文先给出可直接复述的结论,再用最小代码说明worker_threads AsyncLocalStorage 上下文的工作方式、判断依据、项目边界和常见误区。
worker.terminate() 的语义是什么,调用后还能复用该 Worker 吗? 本文先给出可直接复述的结论,再用最小代码说明worker terminate 终止 复用的工作方式、判断依据、项目边界和常见误区。
Node.js 的 CPU 密集任务应该切片、用 Worker,还是交给独立进程? 本文先给出可直接复述的结论,再用最小代码说明Node.js CPU 密集任务 拆分 setImmediate worker_threads的工作方式、判断依据、项目边界和常见误区。
以 fs.readFile 回调为具体上下文比较 setImmediate 与零延时定时器,说明 poll 到 check 的关系、定时器阈值,以及同步注册、await 续体和自定义事件的区别。
Node.js 事件循环有哪些阶段,Node 20 之后定时器位置有什么变化? 本文先给出可直接复述的结论,再用最小代码说明Node.js 事件循环阶段 timers poll check的工作方式、判断依据、项目边界和常见误区。
async_hooks 的 init、before、after、destroy 四个回调分别在异步资源生命周期的什么时候触发? 本文先给出可直接复述的结论,再用最小代码说明async_hooks init before after destroy 时机的工作方式、判断依据、项目边界和常见误区。
Node.js 的 async_hooks 模块能追踪什么,为什么它被标记为实验性但仍被广泛使用? 本文先给出可直接复述的结论,再用最小代码说明async_hooks 用途 实验性 asyncId的工作方式、判断依据、项目边界和常见误区。
AsyncLocalStorage 如何在 Node.js 中实现跨异步调用的请求级上下文(如 traceId)传递? 本文先给出可直接复述的结论,再用最小代码说明AsyncLocalStorage 请求上下文 traceId 传递的工作方式、判断依据、项目边界和常见误区。
哪些写法会导致 AsyncLocalStorage 的上下文在 Node.js 中丢失,比如事件监听或连接池复用? 本文先给出可直接复述的结论,再用最小代码说明AsyncLocalStorage 上下文丢失 EventEmitter 连接池的工作方式、判断依据、项目边界和常见误区。
在 Node.js 里做请求上下文传递,为什么优先 AsyncLocalStorage 而不是第三方 cls 或 zone 方案? 本文先给出可直接复述的结论,再用最小代码说明AsyncLocalStorage 对比 cls 请求上下文方案的工作方式、判断依据、项目边界和常见误区。
Node.js 的 AsyncResource 类解决什么问题,自定义异步资源(如手写队列)为什么要显式使用它? 本文先给出可直接复述的结论,再用最小代码说明AsyncResource 自定义异步资源 AsyncLocalStorage的工作方式、判断依据、项目边界和常见误区。
Node.js 中 executionAsyncId 和 triggerAsyncId 分别代表什么,如何用它们还原异步调用因果链? 本文先给出可直接复述的结论,再用最小代码说明executionAsyncId triggerAsyncId 区别的工作方式、判断依据、项目边界和常见误区。
Node.js EventEmitter 的 captureRejections 选项解决了异步监听器里的什么问题? 本文先给出可直接复述的结论,再用最小代码说明EventEmitter captureRejections 异步监听器 rejection的工作方式、判断依据、项目边界和常见误区。
设计一个 Node.js 内部模块时,什么时候应该继承 EventEmitter 而不是直接回调或返回 Promise? 本文先给出可直接复述的结论,再用最小代码说明继承 EventEmitter 设计决策 回调 Promise 对比的工作方式、判断依据、项目边界和常见误区。
Node.js 的 events.on() 把 EventEmitter 转成异步迭代器,适用于什么场景,背压如何处理? 本文先给出可直接复述的结论,再用最小代码说明events.on 异步迭代器 EventEmitter Node.js的工作方式、判断依据、项目边界和常见误区。
Node.js 的 EventEmitter.emit 是同步还是异步派发?这对监听器里的异常有什么后果? 本文先给出可直接复述的结论,再用最小代码说明EventEmitter emit 同步 监听器异常的工作方式、判断依据、项目边界和常见误区。
Node.js 中 async 函数里 await 一个 Promise 后,后续代码作为什么类型的任务恢复执行? 本文先给出可直接复述的结论,再用最小代码说明await 恢复执行 微任务 Node.js async的工作方式、判断依据、项目边界和常见误区。
在 fs 回调等 I/O 回调里创建的 Promise.then 和 setImmediate 谁先执行? 本文先给出可直接复述的结论,再用最小代码说明I/O 回调内 Promise setImmediate 执行顺序的工作方式、判断依据、项目边界和常见误区。
Node.js 中 new Promise 的 executor 是同步还是异步执行,这对错误捕获有什么影响? 本文先给出可直接复述的结论,再用最小代码说明Promise executor 同步执行 错误捕获 Node.js的工作方式、判断依据、项目边界和常见误区。
在 Node.js 中嵌套的 Promise.then 链与多个并行 Promise 的回调按什么顺序交错执行? 本文先给出可直接复述的结论,再用最小代码说明Promise then 执行顺序 嵌套 微任务队列 Node.js的工作方式、判断依据、项目边界和常见误区。
Node.js 的 queueMicrotask() 与 process.nextTick、Promise.resolve().then() 有什么语义差别? 本文先给出可直接复述的结论,再用最小代码说明queueMicrotask process.nextTick 区别 Node.js的工作方式、判断依据、项目边界和常见误区。
官方建议哪些场景使用 process.nextTick,例如保证回调总是异步的 API 设计? 本文先给出可直接复述的结论,再用最小代码说明process.nextTick 使用场景 回调异步化的工作方式、判断依据、项目边界和常见误区。
process.nextTick 队列和 Promise 微任务队列都清空时谁先执行?为什么? 本文先给出可直接复述的结论,再用最小代码说明process.nextTick Promise 微任务 执行顺序的工作方式、判断依据、项目边界和常见误区。
区分 require ESM 的引入版本、默认启用和警告变化,解释同步模块图、间接顶层 await、返回命名空间与动态 import 的边界,避免只按 Node 大版本判断兼容性。
在 Node.js ESM 中直接 import .wasm 文件需要满足什么条件? 本文先给出可直接复述的结论,再用最小代码说明Node.js WebAssembly modules experimental-wasm-modules的工作方式、判断依据、项目边界和常见误区。
Node.js 的 domain 模块为什么被废弃,现在用什么机制做请求级错误上下文传播? 本文先给出可直接复述的结论,再用最小代码说明Node.js domain 废弃 AsyncLocalStorage 替代的工作方式、判断依据、项目边界和常见误区。
Node.js 服务进程退出码(0/1 及 process.exitCode 与 process.exit())应该如何规范使用? 本文先给出可直接复述的结论,再用最小代码说明Node.js 退出码 exitCode 与 process.exit 规范的工作方式、判断依据、项目边界和常见误区。
在 Express 4 中如何为所有异步路由统一建立错误边界而不漏掉 Promise 拒绝? 本文先给出可直接复述的结论,再用最小代码说明Express 4 异步路由统一错误边界的工作方式、判断依据、项目边界和常见误区。
Express 的错误处理中间件为什么必须是四个参数,异步路由抛错为何不会自动进入它? 本文先给出可直接复述的结论,再用最小代码说明Express 错误中间件 四参数 异步错误捕获的工作方式、判断依据、项目边界和常见误区。
Node.js HTTP 监听失败的 EADDRINUSE、EACCES 应怎样处理? 本文先给出可直接复述的结论,再用最小代码说明Node.js http server error 事件 EADDRINUSE 处理的工作方式、判断依据、项目边界和常见误区。
逐项解释未处理 Promise 拒绝的五种 Node.js 模式,区分 throw 与 strict 的事件顺序、警告与退出码,以及监听器对行为的影响,提供独立进程验证方法。
为什么 for await 遍历 Node.js Readable 时提前 break 会自动销毁流,这替代不了哪种显式错误处理? 本文先给出可直接复述的结论,再用最小代码说明Node.js readable for await break destroy的工作方式、判断依据、项目边界和常见误区。
Node.js Writable 在 end 之后再 write 会触发什么错误,为什么不能靠 try/catch 捕获异步流错误? 本文先给出可直接复述的结论,再用最小代码说明Node.js write after end ERR_STREAM_WRITE_AFTER_END的工作方式、判断依据、项目边界和常见误区。
Node.js fs.createReadStream 打开失败时错误发生在哪一步,调用方如何避免把 open 错误当作数据错误重试? 本文先给出可直接复述的结论,再用最小代码说明Node.js createReadStream open error ENOENT的工作方式、判断依据、项目边界和常见误区。
Node.js stream/promises 的 pipeline 与 finished 相比事件回调写法解决了哪些收尾竞态? 本文先给出可直接复述的结论,再用最小代码说明Node.js stream promises pipeline finished的工作方式、判断依据、项目边界和常见误区。
Node.js Readable.from 把数组或异步迭代器转成流时,背压是否自动生效? 本文先给出可直接复述的结论,再用最小代码说明Node.js Readable.from async iterator 背压的工作方式、判断依据、项目边界和常见误区。