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)
,我怀疑它是否有效。你能发布你的完整实现吗?