您好,欢迎访问一九零五行业门户网

一文快速了解Node.js中的事件循环

本篇文章带大家了解一下node.js异步编程中的事件循环。事件循环是实现node非阻塞i/o非常重要的一部分!事件循环,非阻塞i/o都是属于libuv这个c++库的底层能力。理解了事件循环,非阻塞i/o就理解了node的异步是怎样运行的!
node 自身的执行模型——事件循环,正是它使得回调函数十分普遍。【推荐学习:《nodejs 教程》】
在进程启动时,node 便会创建一个类似于 while(true)的循环,每执行一次循环体的过程我 们称为 tick。每个 tick 的过程就是查看是否有事件待处理,如果有,就取出事件及其相关的回调 函数。如果存在关联的回调函数,就执行它们。然后进入下个循环,如果不再有事件处理,就退 出进程
tick 流程图
事件循环是实现 node.js 非阻塞 i/o 非常重要的一部分! 事件循环,非阻塞 i/o 都是属于 libuv 这个 c++ 库的底层能力。 理解了 事件循环,非阻塞 i/o 就理解了 node.js 的异步是怎样运行的!
通过代码模拟 eventloopconst eventloop = {  queue: [],  // 循环方法  loop() {    // 不停的检测队列是否还有未循环的消息    while (this.queue.length) {      const callback = this.queue.shift();      callback();    }    // 执行下一次循环    // 小知识点 js的 this绑定    settimeout(this.loop.bind(this), 50);  },  // 添加消息到队列  add(callback) {    this.queue.push(callback);  },};eventloop.loop();settimeout(() => {  eventloop.add(() => {    console.log(第一个);  });}, 500);settimeout(() => {  eventloop.add(() => {    console.log(第二个);  });}, 800);
以上就是事件循环的一个最基本的例子, 我们可以往里面添加消息,然后它隔一段时间就检测一下是否有事件没有处理完,如果有则执行事件处理
每一个事件循环都是全新的调用栈更多编程相关知识,请访问:编程视频!!
以上就是一文快速了解node.js中的事件循环的详细内容。
其它类似信息

推荐信息