gpt4 book ai didi

javascript - 什么是事件循环,它与使用其他模型有何不同?

转载 作者:IT老高 更新时间:2023-10-28 23:18:40 25 4
gpt4 key购买 nike

我一直在研究 Node.JS,所有文档和博客都在讨论它如何使用事件循环而不是每个请求模型。

我在理解差异时有些困惑。我觉得我 80% 都理解它,但还没有完全理解它。

最佳答案

线程模型将为每个请求生成一个新线程。这意味着您在计算和内存方面获得了相当多的开销。事件循环在单个线程中运行,这意味着您不会获得开销。

这样做的结果是你必须改变你的编程模型。因为所有这些不同的事情都发生在同一个线程中,所以你不能阻塞。这意味着您不能等待某些事情发生,因为这会阻塞整个线程。相反,您定义一个在操作完成后调用的回调。这通常称为非阻塞 I/O

阻塞 I/O 的伪示例:

row = db_query('SELECT * FROM some_table');
print(row);

非阻塞 I/O 的伪示例:

db_query('SELECT * FROM some_table', function (row) {
print(row);
});

这个例子使用了 lambdas(匿名函数),就像它们在 JavaScript 中一直使用的一样。 JS 大量使用事件,而这正是回调的意义所在。一旦 Action 完成,就会触发一个触发回调的事件。这就是为什么它通常被称为事件模型异步模型

此模型的实现使用一个循环来处理和触发这些事件。这就是为什么它被称为事件队列事件循环

事件队列框架的突出示例包括:

关于javascript - 什么是事件循环,它与使用其他模型有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3272298/

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