javascript - Node.js setTimeout 未退出
问题描述
我正在编写一个程序,该程序将尝试解决一个难题,但对 CPU 时间的花费有限制,并尝试使用 setTimeout 来实现这一点,该 setTimeout 在经过一定时间后退出程序,但什么也没发生时间用完了。将其归结为一个简单的测试用例:
setTimeout(function () {
process.exit(1)
}, 10)
while (1) {}
而不是在十毫秒后退出,上面只是保持挂起。
我究竟做错了什么?
解决方案
javascript是异步的,这意味着一次一个任务。JS 只会在当前任务完成或需要额外操作(等待响应、I/O 操作等)时切换到另一个任务
由于 while 循环永远不会完成并且不需要其他操作,它只会永远运行并且永远不会切换到 setTimeout。
更多细节:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop
推荐阅读
- android - gradle中以下任务之间的循环依赖
- javascript - 如何在 JavaScript 中创建 HashMap?
- java - 如何使用Java按列在excel中编写数据列表?
- ruby-on-rails - 如何使用ajax从数据库中获取数据
- python - python中的调查/如何让用户退出调查
- tensorflow - 如何提高模型的准确性?
- spring-boot - 检查响应对象是否不返回数据
- python - 如何执行我的脚本并在 PYQT5 的 GUI 中打印它?
- unit-testing - 我的应用程序的哪一层应该进行集成测试:Controller vs Service VS DAO?
- java - 如何使用外部提供的 Connection 和 TransactionManager 引导 EntityManagerFactory