快速理解 JS promise对象

好久没有发文了,为了不让大家忘了我,今天给大家分享一下promise对象的小案例。promise是异步微任务,解决了异步多层嵌套回调的问题,在前端非常常用,面试也经常会问到它,现在就带着大家快速理解promise的使用。

下面这段代码创建了一个函数表达式a

函数内部返回了一个 Promise ,在Promise的构造器里传入一个函数,这个函数有两个参数,分别是两个函数 `resolve`和`reject`,resolve可以理解为函数体执行过程中满足你设立的条件时所触发的函数,reject则是不满足时触发。

就比如下面这个例子,给函数a传入一个值如果大于0触发resolve函数里的,否则就触发reject函数里的。

var a = function (num) {
    return new Promise((resolve, reject) => {
        if (num > 0) {
            resolve("成功大于0");
        }
        else {
            reject("失败小于0");
        }
    });
};

我们验证一下这个函数。可以使用`then`方法分别指定成功或失败的回调函数。

a(1).then(function (res) {
    console.log(res);
}).catch(res => {
    console.log(res)
})

传入一个1进去,控制台的输出信息就是我们写在resolve里的内容。

如果传入一个小于0的数就会触发catch函数,捕获reject的异常,也可以不写,不写的后果就是会报错,程序将不会继续执行下去。

resolve 方法的参数是then中回调函数的参数,reject 方法中的参数是catch中的参数。

then 方法和 catch方法 只要不报错,返回的都是一个fullfilled状态的promise 。

 promise共有三种状态 - pending(执行中) - Resolved(成功,又称Fulfilled) - rejected(拒绝) 其中pending为初始状态,fulfilled和rejected为结束状态(结束状态表示promise的生命周期已结束)。一旦状态改变,就不会再变,任何时候都可以得到这个结果。

Promise对象的状态改变,只有两种可能(状态凝固了,就不会再变了,会一直保持这个结果): - 从Pending变为Resolved - 从Pending变为Rejected。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值