ES6语法 学习笔记(六)Promise

本文详细介绍了ES6的Promise对象,用于解决异步回调的问题。Promise有三种状态:pending、rejected和resolved。文章重点讲解了Promise.resolve()、Promise.reject()、Promise.all()和Promise.race()的用法,并提供了示例进行说明。

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

Promise

  • 作用:解决异步回调的问题,Promise是一个对象
  • Promise对象有三种状态:pendding(正在请求),rejected(失败),resolved(成功)

语法:

let promise = new Promise(function(resolve,reject){
    //resolve   调用成功
    //reject    调用失败
});
promise.then((res) => {//then中有两个参数,res对应resolve的回调,err对应reject的回调

},(err) => {

})
promise.catch((err) => {
            
})
  • 简洁的写法:
new Promise().then((res) => {
            
}).catch((err) => {

})
//一般then只处理成功的,catch用来处理错误的,并捕获错误信息

只有promise内部状态发生变化then才会执行

示例:

let promise = new Promise(function(resolve,reject){
    console.log('1');
});
promise.then((res) => {
    console.log('2');
})
//只打印出了1

Promise.resolve()

作用:将现有的东西转换成一个Promise对象,并且是resolved状态

Promise.resolve('aa');
//等价于
new Promise(resolve => {
    resolve('aa');
});

Promise.reject()

作用:用法与resolve一样,状态为rejected状态

Promise.all([Promise1],[Promise2],…)

作用:将任意个promise对象打包放在一个数组里面,只有这些promise对象状态都为为resolved状态,通过Promise.all()生成的对象的状态才为resolved状态,否则为rejected状态

Promise.race([Promise1],[Promise2],…)

作用:通过Promise.race()生成的对象的状态是,数组中先执行的那个Promise对象的状态

小示例:

        let status = 1;
        let userLogin = (resolve, reject) => {
            setTimeout(() => {
                if (status == 1) {
                    resolve({ data: '登录成功', msg: 'xxx', token: 'xxsadfsadfas' });
                } else {
                    reject('失败了');
                }
            }, 2000);
        };

        let getUserInfo = (resolve, reject) => {
            setTimeout(() => {
                if (status == 1) {
                    resolve({ data: '获取用户信息成功', msg: 'asdfasdf', token: 'xxsadfsadfas' });
                } else {
                    reject('失败了');
                }
            }, 1000);
        }

        new Promise(userLogin).then(res => {
            console.log('用户登录成功');
            return new Promise(getUserInfo);
        }).then(res => {
            console.log('获取用户信息成功');
            console.log(res);
        })

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

boboj1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值