【发布时间】:2018-07-21 04:44:30
【问题描述】:
我目前正在寻找一种使用节点在同步 JavaScript 代码上超时的方法。
简而言之:我的同步代码耗时太长(例如:无限循环)。我会很高兴停止它的运行。
关于异步功能
我找到了一种在异步调用上使用 Promise.race 和自定义 delay 承诺的方法,该承诺在 Xxx 毫秒后结束。
对于异步函数,代码如下:
function timeoutIt(fun, timeMs) {
return Promise.race([
fun(),
new Promise((resolve, reject) => setTimeout(reject, timeMs))
]);
}
我试图派生这个 sn-p 来接收我的同步函数,但是一旦调用了该函数,reject Promise 就永远不会执行。对同步代码有某种超时的想法吗?
上下文:我目前正在开发一个基于属性的测试框架 https://github.com/dubzzz/fast-check 并希望能够工作 即使对于代码进入无限循环的破坏性情况。为了 此刻,代码保持并等待测试框架超时 在它的一边
提前感谢您的帮助
【问题讨论】:
-
不是 100% 确定,但认为您可以使用 timeout 参数运行 child process。
标签: javascript node.js multithreading asynchronous timeout