如何在javascript中设置一个函数的执行时间限制?



我有一个异步javascript函数。当该函数执行时,它可以结束并返回数据,也可以永远运行。我想限制这个函数的执行,这样如果它挂起,我可以在超时后停止它:

  • 如果运行时间少于10秒(例如,需要4秒才能完成),那么它不必等待6秒来执行下一个指令。
  • 如果它需要超过10秒(如果函数永远不会回答),那么我想终止它。

是否有任何方法可以在不使用setTimeout()的情况下做到这一点(因为我不想等待,如果函数在超时之前结束其执行)?

如果你正在做API调用,像axios这样的库提供了超时选项

import axios from axios ;
axios
.get(‘url’, {timeout: 3000})
.then((res) => console.log(res))
.catch((err) => console.log(err))

否则,我认为你可以在超时结束之前清除/kill timeout: https://stackoverflow.com/a/452007/10691892

没有通用的方法。

最接近的方法是创建一个promise并使用setTimeout拒绝它(这是您想要避免的),但这仍然会使异步进程运行。

一些异步函数有内置的功能来配置超时,但它们是特定于特定API的,而不是通用的解决方案。

最新更新