Skip to content
On this page

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

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

promises

沪ICP备20006251号-1