JavaScript的异步编程是先到Web开发的核心技能之一。从最初的回调函数,再到Promise,再到async/await。异步的写法越来越简单简便和易读。
下面就来讲讲关于异步函数的发展历程。
什么是异步函数
异步函数允许程序在某些等待操作的时候执行其他代码,而不阻塞整个程序的运行。
什么是同步
同步则是在代码编写的格式中,规定是从上往下挨个执行。
示例

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

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

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

promise存在三个状态
- Pending:初始状态,不是成功也不是失败
- Fulfilled:已经成功,不会在改变了
- Rejected:已经失败,不会在改变了
async/await
ES2017引入了async/await在书写上让异步操作看起来像同步代码。

实际应用场景
-
Api请求
-
文件读取
最佳实践
- 错误处理
- 避免忘记await
- 合理使用Promise.all()
总结
javascript异步操作经过回调函数,到promise,再到async/await的发展,对于异步操作书写代码越来越简便易读。 建议:在现代web处理异步操作优选async/await,处理并发请求的时候使用Promise.all()。
后续还会继续谈论javascript的闭包,原型链,模块化等技术。