gpt4 book ai didi

javascript - 等待异步函数(不接受回调也不返回 promise )在不更改其他函数的情况下执行

转载 作者:行者123 更新时间:2023-12-02 23:29:19 25 4
gpt4 key购买 nike

我目前正在尝试向用 JavaScript 编写的现有 Web 应用程序添加一些功能。我的问题是我想调用一个函数,该函数再次调用一些异步函数,并且我想在所有其他函数执行完毕之前执行一个函数。

我调用的函数不接受回调,也不返回 promise (这当然是非常糟糕的做法)。

我可以重构现有的函数,以便我调用的函数返回一个 promise ,但这需要大量的时间和精力。

因此,对我来说理想的解决方案是一种允许我等待我调用的函数以及该函数再次调用的所有函数执行的技术。

另一个可接受的选择是一种允许我在执行所有异步函数后执行函数的技术。

因此,将其转移到一个简单的示例中,我想在执行函数 doSomethingAsync 后执行一个函数,而不更改该函数。

var doSomethingAsync = () => {
setTimeout(() => { console.log("do Something Async") }, 1000);
};
// do something after doSomethingAsync has been executed ...

我尝试使用 setTimeout() 和零毫秒函数,但这不起作用,因为它是在 doSomethingAsync 函数之前执行的,我知道在这个简单的示例中。

有很多选项可以在 doSomethingAsync 之后执行某些操作,但我需要一种技术,允许我在 doSomethingAsync 之后执行某些操作,而无需更改此函数。

非常感谢任何提示。

最佳答案

如果不更改 doSomethingAsync,您就无法实现您想要的目标。该函数立即完成,并且无法检测 setTimeout 何时完成。除非你能找到一些其他副作用来监控,否则你就不走运了。

从技术上讲,在 doSomethingAsync 完成执行后立即执行某些操作会很容易。它几乎立即完成。您不能做的是在 setTimeout 触发后执行某些操作。因为 doSomethingAsync 不会返回与其内部所做的任何联系。

关于javascript - 等待异步函数(不接受回调也不返回 promise )在不更改其他函数的情况下执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56582789/

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