node.js事件循环如何记住长时间运行操作完成后需要callback?
我对NODE.JS很新颖。 我读了node.js中只有单个事件循环(作为它的单线程)存在。
现在假设,情况就是这样,最终用户提出要求并且下面的一段代码是模块用户试图运行的一部分:
....some code before...... longRunningOperation(argumentsForLongOperation, callbackMethod(argumentsForCallBack)); ....some code after......
由于nodejs是asynchronous的,因此事件循环将调用longRunningOperation
并移至下一行代码以在模块中执行 。
现在,当longRunningOperation
返回时,我的事件循环如何知道现在应该在longRunningOperation
返回时运行callback。
在java中,我们有方法栈,并且线程被longRunningOperation
在调用longRunningOperation
的地方,所以当函数返回时,线程从完成调用栈开始恢复。
我的问题是如何在node.js事件循环来知道longRunningOperation
已经返回,它需要现在调用callBack()
函数?
它不记得了。 longRunningOperation
本身需要告诉事件循环a)它保存在callbackMethod
,b)当它完成时,应该执行callback。 这就是为什么只有本地函数是asynchronous的,正常的JavaScript代码不能访问事件循环。 而且它们也会立即返回,即使在系统级别上它们通常也是asynchronous的。 如果他们不是,他们将不得不为他们的计算产生一个线程(仍然立即从产卵返回)。