Electron中检测目录时控制台出现pending Promise的原因排查
为什么Electron开发者工具控制台中Promise回调未触发?
- 你当前是在代码暂停状态(比如断点触发、调试器挂起时)执行这段异步代码,此时Electron的事件循环被完全阻塞,Promise的
then/catch回调根本没机会被调度执行,所以看不到console.log输出,只会返回处于pending状态的Promise对象。 - 开发者工具在暂停调试时,会冻结整个事件循环,所有异步任务(包括Promise回调、文件I/O的回调)都会被挂起,直到你点击调试器的「继续」按钮恢复运行,这些回调才会被处理,
console.log才会正常输出。 - 额外提一句:检测目录存在更合适的方式是用
fs.promises.access(serverRoot, fs.constants.F_OK),open方法主要用于打开文件/目录做读写操作,不是专门的存在性检测工具,但这不是你当前回调不执行的核心原因。 - 验证方案:取消代码暂停状态,重新在控制台运行这段代码,
then或catch里的日志就会正常打印出来。
内容的提问来源于stack exchange,提问作者Manngo
相关产品推荐
相关产品推荐

