首页 > 解决方案 > 特定函数运行时阻塞事件循环

问题描述

我假设这个问题的答案非常简单。

每当运行特定功能时,我想阻止 nodejs 事件循环。该函数本身可能会调用它等待的一些异步事物,但我不希望在该函数执行其操作时发生任何其他事情。

谢谢!

标签: node.js

解决方案


node.js中阻塞事件循环的方法是让代码同步:

while (true) {
  // this will block the event loop
}

递归也是同步的

  function rec() {
    rec();
  }

  // This one exists with RangeError: Maximum call stack size exceeded

使用任何同步函数,例如:

fs.readFileSync()
fs.writeFileSync()

// any sync functions will do

如果您打算创建一个超时,这会阻止一切,只需创建一个十亿的 for 循环,它会停止一段时间。

您的请求似乎不自然,也许它不是您需要的 node.js。通常,节点中的人试图使一切异步。


推荐阅读