javascript – 在节点中等待回调时运行任意代码?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 在节点中等待回调时运行任意代码?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1610字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 在节点中等待回调时运行任意代码?](/upload/InfoBanner/zyjiaocheng/704/5d35afa7dc0942258a3b3799d0c17cc8.jpg)
我现在是Node的初学者.我知道回调会阻止Node在等待I / O或其他进程时阻塞,但Node在等待I / O完成时做了什么?我在nodejitsu上读到的一个教程说:“回调是在给定任务完成时调用的函数;这可以防止任何阻塞,并允许其他代码在此期间运行.”但它运行的其他代码是什么?假设给定块的其他代码依赖于从数据库中检索的信息. Node可以在等待回调时处理其他连接,还是只能在当前块中运行其他代码?
解决方法:
节点处理事件队列.当您启动异步操作时,该操作将独立于后台节点进行. Node继续在当前执行线程中运行其余代码,直到它到达执行线程的末尾(例如,所有内容都返回到堆栈顶部).当节点正在运行当前执行线程时,没有其他执行线程将在节点中运行(忽略当前的生成器和光纤).这就是人们将其称为单线程的原因.它按顺序一次运行一个特定的执行线程,而不是并行执行多个线程.必须在下一个运行之前完成.
当一个执行线程完成时,如果事件队列中还有其他事件,则节点将从队列中弹出下一个事件并运行它.事件队列中的其他事件可以来自任何事物.它们可以来自计时器,来自刚启动的异步事件,也可以来自程序中其他位置的异步事件(例如,在您的特定问题中完成的其他数据库操作).如果没有其他事件(因此没有准备好运行的代码),那么节点只是等待直到下一个事件发生(除了垃圾收集之外什么都不做).
然后,当异步操作完成时(在后台),它将向事件队列添加一个事件以调用它的回调.如果此时节点中当前没有其他任何内容正在运行,那么将运行该异步回调事件.如果当前正在节点中运行其他东西,那么该操作将完成执行,当它执行时,事件队列中的下一个事件将运行,依此类推……
这样,在nodejs中一次只有一个执行线程.当一个完成时,nodejs执行引擎从事件队列中获取下一个事件并运行它.当异步操作完成并想要调用它们的回调时,它们会将事件插入到事件队列中.
描述事件队列并包含一些其他引用的This answer是为浏览器编写的,但几乎所有相同的规则都适用于nodejs,因此它也可以帮助您了解更多相关信息.
内容总结
以上是互联网集市为您收集整理的javascript – 在节点中等待回调时运行任意代码?全部内容,希望文章能够帮你解决javascript – 在节点中等待回调时运行任意代码?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。