谈谈JavaScript的异步函数发展历程

JavaScript的异步编程是先到Web开发的核心技能之一。从最初的回调函数,再到Promise,再到async/await。异步的写法越来越简单简便和易读。

下面就来讲讲关于异步函数的发展历程。

什么是异步函数

异步函数允许程序在某些等待操作的时候执行其他代码,而不阻塞整个程序的运行。

什么是同步

同步则是在代码编写的格式中,规定是从上往下挨个执行。

示例

回调函数时间

在ES6之前,javascript主要使用的是回调函数来实现异步操作的

但是使用回调函数就会出现下面这个弊端,如果存在多个需要处理的异步操作,就会产生回调地狱。

回调地狱

当处理多个异步操作的时候,回调函数就使其调用加深

为了解决这个问题,后面引入了Promise解决回调地狱的问题,极大的改善了处理异步操作的书写规范。

Promise

promise存在三个状态

  1. Pending:初始状态,不是成功也不是失败
  2. Fulfilled:已经成功,不会在改变了
  3. Rejected:已经失败,不会在改变了

async/await

ES2017引入了async/await在书写上让异步操作看起来像同步代码。

实际应用场景

  1. Api请求

  2. 文件读取

最佳实践

  1. 错误处理
  2. 避免忘记await
  3. 合理使用Promise.all()

总结

javascript异步操作经过回调函数,到promise,再到async/await的发展,对于异步操作书写代码越来越简便易读。 建议:在现代web处理异步操作优选async/await,处理并发请求的时候使用Promise.all()。

后续还会继续谈论javascript的闭包,原型链,模块化等技术。

相关推荐
前端摸鱼匠14 小时前
Vue 3 的v-bind合并行为:讲解v-bind与普通属性合并的规则
前端·javascript·vue.js·前端框架·ecmascript
REDcker14 小时前
浏览器端Web程序性能分析与优化实战 DevTools指标与工程清单
开发语言·前端·javascript·vue·ecmascript·php·js
Linsk16 小时前
Java和JavaScript的关系真是雷峰和雷峰塔的关系吗?
java·javascript·oracle
当时只道寻常16 小时前
浏览器文本复制到剪贴板:企业级最佳实践
javascript
Alice-YUE17 小时前
【js高频八股】防抖与节流
开发语言·前端·javascript·笔记·学习·ecmascript
是上好佳佳佳呀18 小时前
【前端(十一)】JavaScript 语法基础笔记(多语言对比)
前端·javascript·笔记
莎士比亚的文学花园18 小时前
Linux驱动开发(3)——设备树
开发语言·javascript·ecmascript
01漫游者19 小时前
JavaScript函数与对象增强知识
开发语言·javascript·ecmascript
threelab21 小时前
Three.js 代码云效果 | 三维可视化 / AI 提示词
开发语言·javascript·人工智能
yqcoder1 天前
JavaScript 柯里化:把“大餐”拆成“小炒”的艺术
开发语言·javascript·ecmascript