Appearance
promise 基本使用
- 回调写起了不好看(难以维护) 死亡回调,嵌套不优雅 (链式调用 then)
- 错误处理无法统一 我们需要处理公共的错误逻辑 (catch)
- 尽量简化回调 多个异步并发问题 (Promise.all Promise.finllay)
javascript
readId(function (err, data) {
readInfo(data, function () {
readInfo(data, function () {
readInfo(data, function () {
readInfo(data, function () {
});
});
});
});
});
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
promise 依旧是基于回调的,可能还是会有嵌套问题
promise 的基本用法
- promise 是一个构造函数,默认需要传入一个 executor 执行器
- executor 会立刻执行,并且传入 resolve 和 reject 两个参数
- promise 有三个状态
- fulfilled 成功
- reject 拒绝
- pending 等待状态
- 每个 promise 都有一个 then 方法,可以访问到成功值和失败的原因
- 可以通过 resolve、reject 来改变状态,同时调用对应的回调,一个 promise 实例状态变化后,不能再重新的发生变化
- 当 executor 发生异常的时候 也会触发 promise 的失败
javascript
const promise = new Promise((resolve,reject)=>{
console.log('executor')
throw new Error('出错了') // 异常
resolve('ok');
reject('ok'); // resolve、reject可以改变promise的状态
})
promise.then(data=>{
console.log(data,'success');
},err=>{
console.log(err,'fail');
})
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12