gpt4 book ai didi

javascript - 从外部闭包停止函数执行?

转载 作者:太空宇宙 更新时间:2023-11-04 00:54:23 27 4
gpt4 key购买 nike

我想运行一些预定的作业。这些工作可能会花费很长时间,我想给它们一个超时时间。当一个函数已经运行了 60 秒时,立即停止该函数的执行以及该函数的所有调用。

var x = function (){
/* doing something for eventually a looong time */
}

x.kill()

这可能吗?

最佳答案

因为 Node.js 本身是单线程的,所以在 x() 返回之前,x() 之外的任何其他代码都不会运行。因此,从概念上讲,您无法使用同步运行的单个函数来执行您想要执行的操作。

有一些库添加了您可以使用的某种线程(有特殊限制)。您可以查看这篇文章,了解有关其中一些选项的更多详细信息:How to create threads in nodejs

如果您向我们展示代码在 x() 内部执行的操作,那么我们可以为您提供一些关于如何重组该代码以实现您的目标的想法。如果它具有异步操作(或者可以转换为使用异步操作),则 x() 将返回,并且其他代码可以在 Node.js 等待这些异步操作执行其操作时运行可以向那些异步操作发出信号,告知他们应该停止做自己的事情。但是,大多数时间必须等待异步操作才能使该方案发挥作用。

如果您可以将 x() 代码移动到单独的进程,那么您可以启动一个子进程,为其提供要运行的 x() 代码,然后如果在一定时间内未完成,则终止整个 Node 子进程。这显然是处理此函数调用的一种重量级方法,但它确实使您能够在需要时杀死整个环境。如果从安全或隐私的 Angular 来看有用的话,它还提供进程隔离。

关于javascript - 从外部闭包停止函数执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30677729/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com