浅谈 promise

本文深入探讨了Promise的概念,包括其状态变迁、特点、缺点和基本语法。重点讲解了如何使用catch捕获错误、finally方法以及Promise的相关API。此外,还介绍了async/await的使用,包括它们的声明方式、错误处理和并行执行的技巧,揭示了它们与Promise的内在联系。
摘要由CSDN通过智能技术生成

浅谈 promise

Promise 对象代表一个异步操作

状态

  • pending 准备状态
  • fulfilled 操作成功 resolved
  • rejected 操作失败

特点

  • promise是单一状态,一旦状态确定就不会在发生改变
  • 只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态,只有两种可能从pending => resolved 或者 pending => rejected
  • 是链式调用.then.then的方式这样就避免出现回调地狱了,但是如果链式过多也会不好看,所以后面又推出了async await就更形象了 async相当于new promise的封装 await相当于.then的封装
        let p1 = new Promise((resove,reject)=>{
   
            resove("成功");
            // reject("失败");
        });
        new Promise((resolve,reject)=>{
   
            resolve("成功了");//此时决定执行then还是catch是看resolve和reject谁在前面
            reject("失败了");//单一状态,此时是不会触发catch里面的方法的 因为resove已经触发了then里的方法
        }).then((msg)=>{
   
            console.log("我是then方法"+msg);
        }).catch((error)=>{
   
            console.log("我是catch方法"+error);
        });

缺点

  • 无法取消,一旦新建它就会执行无法中途取消
  • 状态不完全明确,当在pending时 不知当前状态是刚刚开始还是即将完成

基本语法

        new Promise((resove,reject)=>{
   
            resove("成功的原因");
            // reject("拒绝的原因");
        })
        .then(
            null,re=>{
   //用null进行占位成功的回调
                console.log(re);
            }//没有成功状态,但必须有第一个参数只会输出失败的信息
        ).then(//.then返回以后还是一个promise对象
            value=>{
   
                console.log(value);//此时这里会输出"成功的原因",因为在上一个then没用成功回调
            },//成功时输出
            reason=>{
   
                console.log(reason);
            },//失败时输出
        );
        new Promise((resove,reject)=>{
   
            // resove("成功的原因");
            reject("拒绝的原因");
        })
        .then(
            null,re=>{
   //用null进行占位成功的回调
                console.log(re);
            }//没有成功状态,但必须有第一个参数只会输出失败的信息
        ).then(//.then返回以后还是一个promise对象
            value=>{
   
                //此时这里会输出成功,虽然上边执行的是reject,但这里是上边.then返回的promise对象,没有resove和reject的情况下默认回调成功
                console.log("成功");
            },//成功时输出
            reason=>{
   
                console.log(reason);
            },//失败时输出
        );
var promise = new Promise(function(resolve, reject) {
   
 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值