ES6中的promise对象

Promise设计用于解决回调地狱问题,其then()方法是异步的。Promise有三种状态:pending、fulfilled和rejected。then()方法用于添加处理程序,catch()处理异常。Promise.all()等待所有实例成功,Promise.race()则在第一个实例变化时返回。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

promise对象

promise 设计的初衷:解决回调地狱
回调函数层层嵌套就是回调地狱
promise不是异步的,里面then()方法是异步的

创建promise对象

let pro = new Promise((resolve, reject) => {
        console.log(2);
        console.log(resolve);//成功
        console.log(reject);//失败
        resolve(123)

    })

promise有三种状态:

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

初始化===>成功 初始化===>失败 不可逆转

then()方法:

用于绑定处理操作后的处理程序。成功后 参数是回调函数
下一个then()方法的参数是上一个then()方法的返回值
catch只接受一个参数,用于处理操作异常后的业务。 失败后

 //1、promise 设计的初衷:解决回调地狱
    //回调函数层层嵌套就是回调地狱  
    // promise不是异步的,里面then()方法是异步的
    console.log(1);
    // 创建promise对象
    let pro = new Promise((resolve, reject) => {
        console.log(2);
        console.log(resolve);//成功
        console.log(reject);//失败
        resolve(123)

    })
    console.log(3);

    console.log(pro);
    pro.then((res) => {
        console.log(2);
        console.log(res);
        return res
    }).then((res_1) => {
        console.log(res_1);

    }).catch(eor => {
        console.log(eor);
    })
    pro.catch(res => {
        console.log(res);
    })

Promise.all( )方法:

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

 let pro1 = new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve('实例1操作成功')
        }, 2000)
    });
    //创建实例pro2
    let pro2 = new Promise(function (resolve) {
        setTimeout(function () {
            resolve('实例2操作成功')
        }, 1000);
    });

    Promise.all([pro1, pro2]).then(function (result) {
        console.log(result);
    });

promise.race()

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

let pro1 = new Promise(function (resolve) {
        setTimeout(function () {
            resolve('实例1操作成功');
        }, 1000);
    });

    //初始化实例pro2
    let pro2 = new Promise(function (resolve, reject) {
        setTimeout(function () {
            resolve('实例2操作失败');
        }, 2000);
    });

    Promise.race([pro2, pro1]).then(function (result) {
        console.log(result);
    }).catch(function (error) {
        console.log(error);
    });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值