ForeveHG / Frontend-Daily-Interview

学习,尝试回答一些前端面试题
1 stars 0 forks source link

20. JS 异步解决方案的发展历程以及优缺点 #20

Open ForeveHG opened 4 years ago

ForeveHG commented 4 years ago
  1. 回调函数 函数作为参数传递进异步函数,异步操作完成时再执行这个传入的函数 优点 写法简单,容易掌握,是一种异步解决方案 缺点 回调地狱: 函数作为参数层层嵌套,不符合人正常的阅读顺序,理解困难 控制反转: 将回调函数执行的控制权交给了异步函数,如果是第三方库,回调函数是否被调用,调用的次数都不能直接控制,错误处理不方便
  2. Promise Promise解决了回调地狱的问题,通过链式调用可以用同步的方式写异步代码,通过自身的三个状态可以掌握控制权,但缺点是多了很多与核心逻辑无关的代码,而且Promise一旦开始执行无法停止,错误需要通过回调函数来处理
  3. Generator generator的写法简单,可以通过同步的方式表达异步流程,但缺点是必须手动控制函数的执行,需要结合自动执行的generator模块如co,来使用
  4. async/await async/await是目前最优的异步解决方案,可以通过同步的方式表达异步流程,写法简单多余的代码不多