gpt4 book ai didi

javascript - 添加异步等待而无需修改父调用函数

转载 作者:行者123 更新时间:2023-12-05 07:31:46 27 4
gpt4 key购买 nike

在我的 Javascript 应用程序中,有时我发现我需要修改一段最初同步运行的代码并添加一些异步运行的代码。

之前:

function doSomething() {
var x = 0;

...

return true;
}

之后:

async function doSomething() {
var x = 0;
await doSomethingElse();

...

return true;
}

很多时候这很好。但是,如果函数 doSomething 被另一个期望 doSomething 完成并返回结果的函数调用,则会出现问题。最初代码是同步运行的,所以这不是问题。但是现在我已经将异步添加到 doSomething,它甚至会在 doSomethingElse 调用完成之前立即返回。然而,我不希望 doSomething 在 doSomethingElse 完成并且后面有任何代码之前返回。我能想到的唯一解决方案是修改调用代码以将 doSomething 处理为 Promise。这样做的问题是,我最终不得不为调用该函数的函数做同样的事情,依此类推层次结构。

有没有办法添加 doSomethingElse,使 doSomething 仍然同步执行?

类似的帖子似乎表明这是不可能的(但那是 3 年前的事了。也许从那时起已经发生了一些事情使它成为可能):

How to block for a javascript promise and return the resolved result?

最佳答案

你唯一的选择是在某个时候“解雇后忘记”:

 function doSomething() {
var x = 0;
doSomethingElse();
// ...
return true;
}

关于javascript - 添加异步等待而无需修改父调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51628723/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com