Gahing's blog Gahing's blog
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Gahing / francecil

To be best
首页
知识体系
  • 前端基础
  • 应用框架
  • 工程能力
  • 应用基础
  • 专业领域
  • 业务场景
  • 前端晋升 (opens new window)
  • Git
  • 网络基础
  • 算法
  • 数据结构
  • 编程范式
  • 编解码
  • Linux
  • AIGC
  • 其他领域

    • 客户端
    • 服务端
    • 产品设计
软素质
  • 面试经验
  • 人生总结
  • 个人简历
  • 知识卡片
  • 灵感记录
  • 实用技巧
  • 知识科普
  • 友情链接
  • 美食推荐 (opens new window)
  • 收藏夹

    • 优质前端信息源 (opens new window)
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前端基础

  • 应用框架

  • 工程能力

  • 应用基础

  • 专业领域

    • 服务端

      • Deno

      • Node.js

        • Node.js 版本切换
        • Node子进程执行ping操作并获取统计信息
        • Node 中的当前目录路径
        • node小bug记录
        • 事件驱动理解
          • Ref
        • 小技巧:Chrome 在线调试 Node
        • 深入浅出Node.js
        • log4js配置详解
        • node 模块源码解析

        • nodejs文件下载
      • 服务端框架

    • 跨端技术

    • Web IDE

    • 中后台

    • 动效渲染

    • 可视化

    • 埋点监控

    • 多媒体

    • 桌面技术

    • 游戏互动

    • 编辑器

    • 虚拟化与容器化

    • 设计系统

  • 业务场景

  • 大前端
  • 专业领域
  • 服务端
  • Node.js
gahing
2021-09-21
目录

事件驱动理解草稿

单线程事件驱动 + 非阻塞I/O模型

理解上和浏览器类似,对于网络请求,文件读写,是由其他线程处理,处理完后将回调放入事件循环队列。

类似浏览器的同步 xhr 请求,node 也可以同步读写文件,那么将始终占用该线程。

Q1: node 请求里的回调如果有耗时代码,是否会卡在其他请求的处理? A1: 是的。如果每个请求里都有一段 50ms 的耗时代码处理,那么该服务的 qps 不高于 20

Q2: 某个请求里 await 请求是否会卡住其他请求的处理? A2: 不会。每个请求的回调执行是一个任务,可以理解为把多个任务放入了事件循环中执行。这里我们用 setTimeout 在浏览器上模拟

const task = async (name) => {
    console.time(name)
    await new Promise((resolve) => {
        setTimeout(resolve, 5 * 1000)
    })
    console.timeEnd(name)

}
setTimeout(() => {
    task("a")
}, 1000)
setTimeout(() => {
    task("b")
}, 2000)
1
2
3
4
5
6
7
8
9
10
11
12
13
14

Q3:

# Ref

https://juejin.cn/post/6844904054120792071

编辑 (opens new window)
上次更新: 2024/09/01, 23:56:56
node小bug记录
小技巧:Chrome 在线调试 Node

← node小bug记录 小技巧:Chrome 在线调试 Node→

最近更新
01
浅谈代码质量与量化指标
08-27
02
快速理解 JS 装饰器
08-26
03
Vue 项目中的 data-v-xxx 是怎么生成的
09-19
更多文章>
Theme by Vdoing | Copyright © 2016-2024 Gahing | 闽ICP备19024221号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式