Javascript 从外部返回承诺的值

Javascript 从外部返回承诺的值,javascript,asynchronous,Javascript,Asynchronous,我编写了一个函数calc,可以正常完成,也可以根据用户输入永远运行,但我无法控制。我想写一个函数limited\u calc,它围绕它提供一个时间限制,一旦时间到了就停止运行该函数。我有这样的工作时间限制: function limited_calc(max_time, input) { var timed = new Promise((resolve, reject) => { setTimeout(reject, max_time, "Time limit re

我编写了一个函数
calc
,可以正常完成,也可以根据用户输入永远运行,但我无法控制。我想写一个函数
limited\u 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()
控制台一起使用。log()
显示正确的输出,但
返回
ing in
。then()
给出了它应该给出的承诺,而不是值本身。如何从带有
return???的行返回结果?
?我知道设置一个外部变量,然后设置另一个更长的超时是可行的,但似乎不安全。我该如何按预期的方式进行


我使用的资源:在接受的答案中定义的类。

可能的重复-我希望它能回答您的问题。当您说它“永远运行”时,您的意思是页面冻结吗?如果是,您不能有“最大执行时间”,需要重新编写函数以使其易于出错。“停止运行函数”-它如何做到这一点?“我如何从返回行返回结果?”-您不能,它是异步的。只需返回
定时
承诺!要访问该值,您必须按预期使用
然后使用
。@BenjaminPhilippe如果您的代码包含
而(1)
,我怀疑它是否有效。你能发布你的完整实现吗?