众所周知 js 中遍布了各种异步的方法,大到 ajax 小到 setTimeout,为了达成让异步方法串行的目的,有以下x种方法。
1. callback
- 使用方式:将后续执行的方法体作为参数传给前一个方法,在前一个方法的异步操作结束后,调用传入的方法体。
- 示例: ```javascript function nextFunc() { console.log(‘callback 2’) }
function callbackFunc(func) { setTimeout(() => { console.log(‘callback 1’) func() }, 1000) }
callbackFunc(nextFunc) // callback1 callback2
- 优点:简单易用,兼容性超级好
- 缺点:代码侵入性大,破坏代码线性结构
<a name="QTJJe"></a>
## 2. Promise.then
- 使用方法:异步执行的方法返回一个 Promise 对象,当这个对象的状态扭转为 resolve 或 reject 的时候,才会调用 .then
- 示例:
```javascript
function nextFunc() {
console.log('callback 2')
}
function promiseFunc() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('callback 1')
resolve()
}, 1000)
})
}
promiseFunc().then(() => { nextFunc() })
- 更详细的api与手写实现,见