【发布时间】:2019-01-08 18:08:15
【问题描述】:
在我的 Javascript 应用程序中,有时我发现我需要修改一段最初同步运行的代码并添加一些异步运行的代码。
之前:
function doSomething() {
var x = 0;
...
return true;
}
之后:
async function doSomething() {
var x = 0;
await doSomethingElse();
...
return true;
}
很多时候这很好。但是,如果函数 doSomething 被另一个期望 doSomething 完成并返回结果的函数调用,就会出现问题。最初代码是同步运行的,所以这不是问题。但是现在我已经向 doSomething 添加了异步,它甚至会在 doSomethingElse 调用完成之前立即返回。然而,在 doSomethingElse 完成以及其后的任何代码之前,我不希望 doSomething 返回。我能想到的唯一解决方案是修改调用代码以将 doSomething 作为 Promise 处理。这样做的问题是我最终不得不为调用该函数的函数做同样的事情,依此类推。
有没有办法添加 doSomethingElse 以使 doSomething 仍将同步执行?
类似的帖子似乎表明这是不可能的(但那是 3 年前的事了。也许从那以后发生了一些变化以使其成为可能):
How to block for a javascript promise and return the resolved result?
【问题讨论】:
-
这仍然不可能,而且可能永远不会。
标签: javascript