在我的 Node.js 应用程序中,如果函数调用花费的时间太长,我需要某种机制来停止该函数调用。
function testIt() { ... }
runFunctionOnlyFor(1000, testIt, function (err) {
if (err) console.log('function call timed out');
else console.log('function call completed successfully');
});
现在,runFuncOnlyFor
的实现当然是未知的(对我而言)。有什么关于如何实现的建议吗?
最佳答案
我在这里看到了一些问题。
1) 你通常不应该在 Node.JS 中编写阻塞代码,即使它“只有”1 秒。如果这是一个有很多客户端的 Web 服务,阻塞一秒钟可能会对性能造成毁灭性的影响。
2) 由于 Node.JS 实际上是单线程的,我真的没有看到任何简单的方法来在一定时间后取消执行,除非计时由 testit
本身完成,因为您需要一个单独的线程来运行中止第一个线程中运行的函数的函数。
更好的方法可能是使 testit
函数异步,并将其分解为具有中间上下文切换的几个步骤,并定期检查可能由 设置的标志或类似内容一旦所需持续时间的计时器到期,runFunctionOnlyFor
。
另一种方法是使用 child process ,如果这适合您的目的。
关于javascript - Node : Cancel function call if it takes too long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32116500/