es6中promise对象

目录

  • promise的初衷
  • 创建promise对象
  • promise的三种状态和转换
    • promise有三种状态:
    • 三者之间的转换
  • then()方法
  • catch()方法
  • promise.all()方法
  • promise.race()方法

promise的初衷

promise设计初衷就是解决回调地狱(回调函数层层嵌套就是回调地狱)

创建promise对象

    let pro = new Promise((resolve, reject) => {
        console.log(resolve);
        console.log(reject);
        resolve(123)
    })
     console.log(pro);

promise的三种状态和转换

promise有三种状态:

    pending:初始化
    fulfilled:成功  resolve()方法执行时
    rejected:失败   reject()方法执行时

三者之间的转换

    pending初始化===>fulfilled成功
     pending初始化===>rejected失败

then()方法

then()方法:用于绑定处理操作后的处理程序。用于成功后 参数是回调函数 下一个then()方法的参数是上一个then()方法的返回值

   let pro = new Promise((resolve, reject) => {
        console.log(resolve);
        console.log(reject);
        resolve(123)
    })
     console.log(pro);
     pro.then((res) => {
        console.log(2);
        console.log(res);
        return res
    }).then((res_1) => {
        console.log(res_1);
    }

catch()方法

catch()方法:只接受一个参数,用于处理操作异常的业务。用于失败后,参数是一个回调函数

    let pro = new Promise((resolve, reject) => {
        console.log(resolve);
        console.log(reject);
        resolve(123)
    })
     console.log(pro);
     pro.catch(eor => {
        console.log(eor);
    })

promise.all()方法

promise.all()方法 接受一个数组作为参数,数组的元素是Promise实例对象,当参数中的实例对象的状态都为fulfilled时,Promise.all()才会有返回。

    let pro1 = new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve('实例1操作成功')
        }, 2000)
    })
    // 创建实例prom2
    let pro2 = new Promise(function (resolve) {
        setTimeout(function () {
            resolve('实例2操作成功')
        }, 1000)
    })
    Promise.all([pro1, pro2]).then(function (result) {
        console.log(result);
    })

promise.race()方法

promise.race()方法 只要有一个状态发生变化(不管是成功fulfilled还是异常rejected),它就会有返回,其他实例中在发生变化,它也不管了。

    let pro3 = new Promise(function (resolve) {
        setTimeout(function () {
            resolve('实例1操作成功')
        }, 1000)
    })
    // 初始化实例pro4
    let pro4 = new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve('实例2操作失败')
        }, 2000)
    })
    Promise.race([pro3, pro4]).then(function (result) {
        console.log(result);
    }).catch(function (error) {
        console.log(error);
    })

你可能感兴趣的:(es6,javascript,前端)