Promise简单总结

  • Promise代表一个异步操作。
  • 创建一个Promise实例
const promise =  new Promise((resolve,reject) => {
  ...
  if (/*异步操作成功*/) {
    resolve(value);
  } else {
    reject(error)
  }
})

promise.then((value) => {
  ...
}).catch((error) => {
  ...
})
  • Promise构造函数接收一个参数,该参数是一个异步执行的函数。这个函数有两个参数resolvereject
  • 当异步操作执行成功时将会调用resolveresolve的作用是将promise对象的状态由“未完成”变为“成功”,此时将会调用resolved(成功)状态的回调函数,该回调函数是then方法的第一个参数。该回调函数的参数值可通过设置resolve函数的参数传递过来。
  • 当异步操作执行失败时将会调用rejectreject的作用是将promise对象的状态由“未完成”变为“失败”,此时将会调用rejected(失败)状态的回调函数,该回调函数是then方法的第二个参数。但一般不会使用then的第二个参数,而是使用catch方法。因为catch方法不仅可以捕获到一开始promise对象中异步操作失败的错误,还能捕获到前面then方法中的错误。
  • 使用Promise封装简化版axiosget方法:
const myAxios = {
  get:function(url) {
        return new Promise((resolve,reject) => {
          const xhr = new XMLHttpRequest();
          xhr.open('GET',url,true);
          xhr.onreadystatechange = function() {
            if (this.readyState !== 4) {
              return;
            }
            if (this.status === 200) {
              resolve(this.response);
            } else {
              reject(new Error(this.statusText));
            }
          }
          xhr.send();
        })
      }
}

你可能感兴趣的:(Promise简单总结)