Node.js 开发实战
杨浩
腾讯高级工程师
37442 人已学习
新⼈⾸单¥68
课程目录
已完结/共 57 讲
第一章:课程简介 (5讲)
Node.js 开发实战
登录|注册
留言
27
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 15 | 异步:事件循环
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
01 | 课程介绍
02 | 内容综述
03 | Node.js是什么?
04 | Node.js可以用来做什么?
05 | 课程实战项目介绍
06 | 什么是技术预研?
07 | Node.js开发环境安装
08 | 第一个Node.js程序:石头剪刀布游戏
09 | 模块:CommonJS规范
10 | 模块:使用模块规范改造石头剪刀布游戏
11 | 模块:npm
12 | 模块:Node.js内置模块
13 | 异步:非阻塞I/O
14 | 异步:异步编程之callback
15 | 异步:事件循环
16 | 异步:异步编程之Promise
17 | 异步:异步编程之async/await
18 | HTTP:什么是HTTP服务器?
19 | HTTP:简单实现一个HTTP服务器
20 | HTTP:实现网页版石头剪刀布
21 | HTTP:用express优化石头剪刀布游戏
22 | HTTP:用koa优化石头剪刀布游戏
23 | RPC 调用:什么是RPC调用?
24 | RPC调用:Node.js Buffer编解码二进制数据包
25 | RPC 调用:Node.js net建立多路复用的RPC通道
26 | 项目启动:整体需求分析
27 | 项目启动:极客时间App下载页开发
28 | 课程详情页:极客时间详情页需求解构
29 | 课程详情页:将ES6模版字符串改造成模板引擎
30 | 课程详情页:极客时间详情页需求实现
31 | 课程播放页:极客时间播放页需求解构
32 | 课程播放页:GraphQL API服务
33 | 课程播放页:极客时间播放页需求实现
34 | 课程列表页:极客时间列表页需求解构
35 | 课程列表页:用 Vue/React 进行服务端渲染
36 | 课程列表页:极客时间列表页需求实现
37 | 性能工具:HTTP服务的性能测试
38 | 性能工具:Node.js性能分析工具
39 | 代码优化:JavaScript代码性能优化
40 | 代码优化:内存管理优化
41 | 代码优化:Node.js C++插件
42 | 多进程优化:Node.js子进程与线程
43 | 多进程优化:Node.js cluster模块实战与源码解读
44 | 多进程优化:进程守护与管理
45 | 架构优化:动静分离
46 | 架构优化:反向代理与缓存服务
47 | 概念:框架设计和工程化
48 | 概念:设计模式
49 | 概念:Serverless
50 | 服务端框架搭建:koaless
51 | 服务端框架搭建:屏蔽请求细节
52 | 服务端框架搭建:完成服务端框架
53 | 云函数式工程实现:服务端代码
54 | 云函数式工程实现:工具端代码
55 | 加餐:调试 Node.js 源码
56 | 结课测试&结束语
57 | 彩蛋:这是一个严肃的课程
本节摘要
登录 后留言

全部留言(27)

  • 最新
  • 精选
Taopoppy
事件循环本身就比较难,实战课程的目的就是通过实战的方式帮你理解,如果要通过理论的讲述来理解建议还是多看看文章,博客,书籍之类的,比如这个博客就写的真的比较详细和好理解: https://www.taopoppy.cn/node/one_eventLoop.html

作者回复: 哈哈哈哈优秀的宣传。 写得很不错,尤其是事件循环的每个阶段发生的事情,这部分就是我觉得讲起来耗时会太长没放进来的内容。很赞。

2019-10-29
9
20
一个大西瓜
interview所在的栈: setTimeout回调函数进入的栈: |____interview()_____| |___()=>{} 匿名函数__| |__________________| |__________________| |__________________| |__________________| 他们进入的调用栈是两个不同的调用栈,try...catch...实际上捕获的是interview所在调用栈的函数,所以setTimeout的回调函数就没有被catch住,老师,可以这么理解前面讲的interview的那段代码么?

作者回复: 可以的

2019-10-02
3
8
Jesse
讲的太简单了,微任务还有宏任务 循环机制都没讲,哈哈

作者回复: 权衡了很久之后觉得塞不下十多分钟的课里,就放弃了。我争取后面补多一节课吧

2019-10-08
2
7
Geek_fc1551
老师有种开发场景,想问下有没有最优的处理方式 比如 data:{ a:{b:{c:{d:30}}}} 这种情况我们要取 d的值 为了保证 data.a.b.c.d 不报错我们都是data&&data.a&& ....这样列下去,有没有什么方式可以很好的保证这个问题,现在感觉就写个方法递归循环到需要的值但是感觉也不是很好的方式

作者回复: https://www.npmjs.com/package/get-value 这个npm包应该能解决你的问题

2019-12-11
6
5
CrazyMuyang
https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/?utm_source=html5weekly 贴一篇关于微任务/宏任务/事件循环的博客。

作者回复: 赞。

2019-11-24
4
布小生
老师别忘了给我们加课,因为你讲的深入又通俗,不想错过

作者回复: 加!

2019-11-06
4
aaa
事件循环为什么这里讲那么少呢~

作者回复: 一节课的总时长被限制了,后面在实战中遇到的话我会再提一下。

2019-10-04
3
AICC
如果interView函数里不调用setTimeout,而是调用全局定义的另一个函数,那这个函数在interView的调用栈里么?

作者回复: 在的

2020-12-08
2
Geek_d835f4
网上搞了半天,得出个结论不知道对不对。settimeout里直接调用方法,会直接执行,而不会定时。只有传一个方法,才会定时执行,而bind()会创建一个函数,并改变作用域。

作者回复: setTimeout的第一个参数应该是一个函数。 我猜你说的应该是setTimeout(func(), 3000)这样的形式,这样其实是把func函数的执行结果传入了setTimeout。这样当然不会定时了。

2020-08-30
Geek_d835f4
50ms直接堆溢出了,所以我改成500,但也是快到不行。下面是我改的代码 let count = 0 const eventloop = { queue: [], loop () { while(this.queue.length) { var callback = this.queue.shift() callback() } count +=1 console.log(count) setTimeout(this.loop(), 500); }, add(callback) { this.queue.push(callback) } } eventloop.loop() setTimeout(() =>{ eventloop.add(function() { console.log(1) }) }, 500) setTimeout(() =>{ eventloop.add(function() { console.log(2) }) }, 800)

作者回复: 这段只需要理解思路,不用太纠结具体的执行结果。

2020-08-30
收起评论