我有一个关于Node中异步方法API的问题。
我有一个函数,让我们称其为longSetup(callback)。
正如名称所示,longSetup(callback)需要很长时间才能完成。然而,这个设置可以与其他事情并行进行。因此,在longSetup()发生时,我也可以进行其他设置。
所以一旦longSetup()完成,该类就已经准备好执行另一个函数,例如serveData()。
现在,我不知道什么时候会调用serveData()。serveData()是基于用户I/O的,并且可能在longSetup()完成之前调用,也可能在longSetup()完成后调用。而且,我从未直接调用serveData()。
确实需要在serveData()成功执行之前完成longSetup(),但是我想利用longSetup()可以异步完成的事实,因此不想实现同步版本的longSetup();我宁愿在那段时间内进行其他设置。
由于serveData()随时可能被调用,因此我想在调用serveData()时检查longSetup()是否已经完成。如果完成了,就继续执行serveData()。如果没有完成,等待longSetup()完成,然后再继续执行。由于longSetup()只被调用一次,大多数情况下我不会等待。此外,如果用户I/O需要时间,longSetup()也会在第一次调用serveData()时完成。
我看过几个关于在执行另一个函数/在另一个函数之后触发一个函数等待函数返回的SO问题和答案,并且我理解了Node的异步方式以及为什么要使用回调。但是,这是一个不同的用例,我想知道node是否提供了一种等待另一个异步函数的方法。
谢谢大家!
我有一个函数,让我们称其为longSetup(callback)。
正如名称所示,longSetup(callback)需要很长时间才能完成。然而,这个设置可以与其他事情并行进行。因此,在longSetup()发生时,我也可以进行其他设置。
所以一旦longSetup()完成,该类就已经准备好执行另一个函数,例如serveData()。
现在,我不知道什么时候会调用serveData()。serveData()是基于用户I/O的,并且可能在longSetup()完成之前调用,也可能在longSetup()完成后调用。而且,我从未直接调用serveData()。
确实需要在serveData()成功执行之前完成longSetup(),但是我想利用longSetup()可以异步完成的事实,因此不想实现同步版本的longSetup();我宁愿在那段时间内进行其他设置。
由于serveData()随时可能被调用,因此我想在调用serveData()时检查longSetup()是否已经完成。如果完成了,就继续执行serveData()。如果没有完成,等待longSetup()完成,然后再继续执行。由于longSetup()只被调用一次,大多数情况下我不会等待。此外,如果用户I/O需要时间,longSetup()也会在第一次调用serveData()时完成。
我看过几个关于在执行另一个函数/在另一个函数之后触发一个函数等待函数返回的SO问题和答案,并且我理解了Node的异步方式以及为什么要使用回调。但是,这是一个不同的用例,我想知道node是否提供了一种等待另一个异步函数的方法。
谢谢大家!
longSetup
完成时,切换布尔值,并在继续函数的其余部分之前在serveData
内部检查它? - thgaskellserveData()
。 - codeBearer