Promise

promise是用来封装异步操作的,可以用来解决回调地狱问题

1.Promise如何封装异步操作

代码演示
 //new Promise(一个参数 是函数类型的)
    //这个函数类型的参数接受两个参数,分别代表两个回调函数
    //p1是一个创建好的Promise对象
    var p1 = new Promise(function (resolve, reject) {
      //进行异步操作...
      console.log('start create')
      setTimeout(function () {
        console.log('定时器1执行了');
        resolve('success1')
      }, 2000)
    })
    p1.then(function (res) {
      console.log('我成功了:' + res);
      
    })

2.Promise如何解决回调地狱问题

代码演示
 axios.post('接口1')
      .then(res => {
        //处理接口1的调用结果
        // return 继续调用接口2
        return axios.post('接口2')
      })
      .then(res => {
        //处理接口2的调用结果
        //...
      })
 在.then里边返回一个新的promise对象,就可以在外头用链式编程继续.then
 这样就会把原来回调地狱的嵌套调用变成链式调用, 就解决了回调地狱的问题

3.Promise的状态

promise共有三种状态
1.刚new出一个Promise对象时,该对象是pending状态
2.执行了resolve回调函数后promise对象就会转成fulfilled状态
3.执行了reject方法就会转成rejected状态

状态的转换关系只能是
pending-->fulfilled
pending-->rejected