js 【详解】异步

为什么需要使用异步?

  1. 减少等待时间:异步编程允许程序在等待某些操作(如网络请求或文件读取)完成时继续执行其他任务,而不是空等,这样可以显著减少等待时间。
  2. 提高响应速度:由于JavaScript是单线程的,同步代码可能会阻塞后续代码的执行,导致整个程序暂停等待。通过使用异步编程,可以避免这种阻塞,从而提高程序的响应速度。
  3. 提升性能:异步编程可以更有效地利用系统资源,因为它允许同时处理多个任务。这样不仅提高了程序的性能,也提升了用户体验。
  4. 避免界面卡顿:在前端开发中,如果长时间运行的任务阻塞了主线程,会导致用户界面无法响应用户操作,造成卡顿现象。异步编程可以将耗时任务放在后台运行,确保用户界面保持流畅。
  5. 支持并发操作:异步编程使得同时发起多个网络请求或同时处理多个I/O操作成为可能,这在现代Web应用中是非常常见的需求。
  6. 代码组织清晰:使用异步编程模式,如Promises和async/await,可以使代码更加模块化和易于理解,错误处理也更加直观。
  7. 适应现代Web API:现代浏览器提供的许多Web API都是基于异步编程设计的,如Fetch API、Web Workers等,使用异步编程可以更好地与这些API协同工作。

异步 vs 同步 的区别

  • 同步会阻塞代码执行

    alert 会阻塞代码的执行,直到用户点击 alert 弹窗的确定按钮,才会打印 300
  • 异步不会阻塞代码执行

异步的应用场景

  • 网络请求,如 ajax 图片加载
  • 定时任务,如 setTimeout,setInterval


异步是怎么实现的?

  • 通过回调函数实现

但回调函数实现异步的方式,容易形成 回调地狱

  • 代码层层嵌套,难以阅读和维护。

为了解决回调地狱的问题,诞生了 Promise

Promise

将只能嵌套的回调函数,变成了可串联的,更易阅读和维护!

  • 避免了嵌套
相关推荐
zhensherlock几秒前
Protocol Launcher 系列:Microsoft Edge 浏览器唤起的优雅方案
javascript·chrome·microsoft·typescript·edge·github·edge浏览器
英俊潇洒美少年23 分钟前
Vue3 中 watch的 flush 选项(默认无/`post`/`sync`)的区别
前端·javascript·vue.js
D_C_tyu28 分钟前
HTML | 结合Canvas开发具有智能寻路功能的贪吃蛇小游戏实战详解
javascript·算法·游戏·html·bfs
Jay-r31 分钟前
樱花雨特效 WebGL实现 短视频同款浪漫视觉效果(附源码下载)
开发语言·javascript·ecmascript·编程·webgl·代码·樱花雨
凤山老林32 分钟前
Js如何实现一个抽奖程序
前端·javascript·vue.js
我命由我1234533 分钟前
React - Switch、路由精准匹配与模糊匹配、Redirect
开发语言·前端·javascript·react.js·前端框架·html·ecmascript
无心水1 小时前
【时间利器】4、JavaScript时间处理全解:Date/moment/dayjs/Temporal
开发语言·前端·javascript·状态模式·openclaw·date/moment·dayjs/temporal
happymaker06261 小时前
web前端学习日记——DAY06(js基础语法与数据类型)
前端·javascript·学习
FlyWIHTSKY1 小时前
父子组件参数传递
前端·javascript·vue.js
不会写DN1 小时前
JS 最常用的性能优化 防抖和节流
开发语言·javascript·ecmascript