快速了解promise,简单易懂

文章目录

  • ES6新增的一种异步编程的解决方案,比传统的回调函数和事件更加的合理和强大。通过Promise可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。Promise可以解决异步的问题,但不能说Promise是异步的


特点

  1. 对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:
  2. pending——进行中
  3. resolved——已成功
  4. rejected——已失败
  5. 一旦状态改变,就不会再发生变化,任何时候都可以得到这个结果。Promise对象状态的改变只有两种可能:
  6. pending——resolved,
  7. pending——rejected,
  8. Promise内部发生错误,不会影响到外部程序的执行。
  9. Promise一旦执行则无法取消:
  10. 一旦创建就会立即执行,无法中途取消(缺点1
  11. 如果不设置回调函数,Promise内部抛出的错误将不会反应到外部(缺点2
  12. 当处于pending状态时,无法得知目前进展到哪一阶段,即无法预测是刚刚开始还是即将完成(缺点3

用法

创建Promise实例时,必须传入一个函数作为参数:

new Promise(() => {})

示例:该函数可以接收另外两个由JavaScript引擎提供的函数,resolvereject:

  • resolve——将Promise对象的状态从pending变为resolved,将异步操作的结果作为参数传递出去
  • reject——将Promise对象的状态从pending变为rejected,将异步操作报出的错误作为参数传递出去
  • (此处我们用定时器来模拟异步请求)()
  • 需要注意的是 此处resolve 成功和 reject 失败 状态是由我们自己人为决定的 
  const p = new Promise((resolve, rejected) => {
            setTimeout(() => {
                // resolve("成功了 奖励你一个女朋友");
                rejected("失败了 罚你去西伯利亚喂鸡子");
            }, 1000);
        });

        p.then((res) => {
            //成功时执行的输出
            console.log(res);
        }, (res) => {
            //失败时执行的输出
            console.log(res);
        })

总结

promise解决异步任务向外传值的问题,解决了代码报错导致无法继续运行的弊端,当失败时会自动输出一个由人为规定的值来作为提示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值