JavaScript重难点解析6(Promise)

本文深入探讨了JavaScript中的Promise,解释了为何使用Promise以解决回调地狱问题,详细阐述了Promise的状态、值以及工作流程。介绍了基本用法、Promise.resolve、Promise.reject、Promise.all和Promise.race等方法,并探讨了async/await的使用,包括如何处理异常和中断Promise链。
摘要由CSDN通过智能技术生成

概念

为什么要使用Promise

1.指定回调函数的方式更加灵活
2.支持链式调用, 可以解决回调地狱问题
回调地狱:回调函数嵌套调用, 外部回调函数异步执行的结果是嵌套的回调执行的条件
回调地狱

Promise 的状态

实例对象中的一个属性 『PromiseState』

  • pending 未决定的
  • resolved / fullfilled 成功
  • rejected 失败

Promise 对象的值

实例对象中的另一个属性 『PromiseResult』
保存着异步任务『成功/失败』的结果

  • resolve
  • reject

Promise工作流程

状态改变

基本用法

Promise是ES6引入的异步编程的新解决方案。用来封装异步操作并可以获取其成功或失败的结果。
promise对象需要传入一个函数,函数接收两个参数resolve和reject,代表成功状态和失败状态,当函数中代码执行到resolve时promise对象会进入成功状态,执行到reject代表promise进入失败状态。Promise一般通过then方法调用,then方法接受两个回调函数,第一个代表成功状态的回调,第二个代表失败状态的回调。

基本使用如下:

 //实例化 Promise 对象
  const p = new Promise(function(resolve, reject){
   //也可以不叫resolve, reject自己指定参数名
      setTimeout(function(){
   
          //
          // let data = '数据库中的用户数据';
          // resolve
          // resolve(data);//data在为then调用时的value

          let err = '数据读取失败';
          reject(err);//err为then调用时的reason
      }, 1000);
  });

  //调用 promise 对象的 then 方法
  p.then(function(value){
   
      console.log(value);
  }, function(reason){
   
      console.error(reason);
  })
  //失败还可以通过catch指定
  p.catch
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值