异步基础
#
1. 并发和并行的区别- 并发是宏观概念,任务A和任务B,在一段时间内通过任务间的切换完成了这两个任务,这种情况就是并发
- 并行是微观概念,CPU有两个核心,那么就可以同时完成任务AB,同时完成两个任务的情况就是并行
#
2. 回调函数- 为了让代码顺序执行,一般会层层嵌套回调函数,导致回调地狱出现
- 回调地狱既不利于维护,也不利于阅读
- 耦合性高
- 很难处理错误,且不能使用try catch捕获错误,不能直接return
#
3. Generator- 通过在function 旁边加一个*,来声明一个生成器函数
- 通过yield关键字,来进行挂起和执行,碰到yield关键字会生成中间结果,返回一个新的对象
- 生成器的工作
- 挂起开始:创建一个生成器,最开始以这个状态开始,里面一行代码都不会执行
- 执行:生成器中的代码执行的状态。执行可能是刚开始,也可能是上次挂起的时候继续。当生成器调用了next方法的时候,会进入到这个状态。
- 挂起让渡:当生成器执行的时候遇到了yield表达式,会创建一个包含返回值的对象,然后在挂起执行。这个时候生成器在等待执行
- 完成:在生成器执行的时候。遇到return,或者所有代码都执行完成之后,生成器进入该状态
- 生成器的执行上下文是一直存在的,挂起的时候一直存在,没有使用的时候是undefined,有值了之后也不会销毁和函数不同,类似创建了一个闭包,可以更好的取挂起的状态和值。
- 用while循环进行迭代
- 生成唯一id
- 生成器的参数
- co
#
4. Promise#
5. async await- co + genertor
- 是Promise + genertor的语法糖
#
6. 定时器- setTimeout setInterval requestAnimationFrame