我编写了一个函数calc
,它可以正常完成或根据用户输入永远运行,我无法控制它。我想编写一个包含它的函数limited_calc
来提供时间限制,并在时间结束后停止运行该函数。我有时间限制使用这样的东西:
function limited_calc(max_time, input) {
var timed = new Promise((resolve, reject) => {
setTimeout(reject, max_time, "Time limit reached");
resolve(calc(input));
}
return ???
}
function calc(input) {
// (do the stuff)
}
将.then()
与console.log()
一起使用会显示正确的输出,但return
中的.then()
会给出应有的承诺,但不是价值本身。如何从return ???
的行返回结果?我知道设置一个外部变量,然后另一个更长的超时工作,但似乎不安全。我该如何做到这一点?
我使用的资源:在接受的答案NodeJS Timeout a Promise if failed to complete in time中定义的类。