js异步编程学习指导

151 阅读2分钟

老早有写js异步的想法,一直感觉还不是时候,现在简单聊聊

刚开始学习js处理异步大多数人想js是单线程,为啥会有异步? 异步区别与同步,是和同步相对立的。js是单线程,是同步的。js代码同步执行,遇到异步函数时,会启动异步线程去执行异步函数,此时异步不阻塞js线程,js继续向下执行,再遇到异步函数继续新开异步线程处理,js继续向下执行,直到同步代码执行完毕。等到什么时候异步执行完毕,会执行异步函数的回调函数。如果想深入了解异步问题,搜索nodejs异步io、nodejs事件轮询一探究竟。

处理异步最根本,最有效就是回调函数,如果就一个异步函数,那使用回调处理起来很简单,如果异步过程复杂,嵌套太多就会导致回调地狱,为了解决这些问题,ES6的promise、generate、yield、co;ES8的async_await均是在回调函数的基础上封装的处理异步过程语法糖。

如何学习js异步处理呢?

  • 1、用熟回调函数处理异步,会处理多层嵌套的异步
  • 2、深入使用promise,了解事件循环的宏任务和微任务,知道promise的三个状态,会用promise.all和promise.race处理异步过程,会promise的链式调用与参数传递,处理错误信息等
  • 3、学会使用async处理异步
  • 4、学会处理异步循环,promise.all,yield [],for of等等,常用for of处理异步循环
  • 5、有时间了再学习co处理异步,虽然这个有点过时,但大项目书写时间久远,里边有很多古老的代码,想看懂或者改bug,就得学学过时的异步处理知识

推荐学习资料:

  • 1、深入浅出nodejs(我js架构体系都是从这本书上学的)
  • 2、学习ES6~ES11 的新语法