位置: IT常识 - 正文

ES6的Promise详解(es6 promise await)

编辑:rootadmin
ES6的Promise详解 文章目录前言一、Promise的概念二、使用Promise创建 PromisePromise 常用方法Promise.prototype.then()Promise.prototype.catch()all()链式调用前言

推荐整理分享ES6的Promise详解(es6 promise await),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:es6 promise then,es6 promise使用场景,es6的promise有几种状态,es6 promise.all,es6的promise有几种状态,es6的promise有几种状态,es6 promise.all,es6 promise then,内容如对您有帮助,希望把文章链接给更多的朋友!

本篇文章主要介绍了ES6语法中的Promise对象的使用详解,promise对象是JS进阶学习中的重要知识点, 如果本文对你有所帮助请三连支持博主,你的支持是我更新的动力,先赞后看养成习惯。

以下是本篇文章正文内容

一、Promise的概念

Promise是异步编程的一种解决方案,是一个对象,可以获取异步操作的消息,大大改善了异步编程的困难,避免了回调地狱,比传统的解决方案回调函数和事件更合理和更强大。

所谓 Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理。

ES6 开始支持 Promise Promise 对象用于一个异步操作的最终完成(包括成功和失败)及结果值的表示。简而言之,就是处理异步请求的。之所以叫做 Promise,就是承诺做这件事,如果成功则怎么处理,失败则怎么处理。

Promise 首先是一个对象 (是一个对象!!!!),它通常用于描述现在开始执行,一段时间后才能获得结果的行为(异步行为),内部保存了该异步行为的结果。然后,它还是一个有状态的对象:

pending:待定fulfilled:兑现,有时候也叫解决(resolved)rejected:拒绝ES6的Promise详解(es6 promise await)

一个 Promise 只有这 3 种状态,且状态的转换过程有且仅有 2 种:

pending 到 fulfilled (resolved)pending 到 rejected二、使用Promise创建 Promise

调用 Promise 构造函数来创建一个 Promise。

let promise = new Promise((resolve, reject) => {// 要做的事情...});

Promise 构造函数接收一个函数作为参数,该函数的两个参数是 resolve,reject,它们由 JavaScript 引擎提供。

resolve 函数的作用是,将 Promise 对象的状态从“未完成”变为“成功”(即从pending 变为resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;reject 函数的作用是,将 Promise 对象的状态从“未完成”变为“失败”(即从pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

Promise 常用方法Promise.prototype.then()

then 方法可以接收两个回调函数作为参数,第一个回调函数是Promise对象的状态改变为 resoved 是调用,第二个回调函数是 Promise 对象的状态变为 rejected 时调用。其中第二个参数可以省略。

promise.then((resoved)=>{console.log('成功')},(rejected)=>{console.log('失败')})Promise.prototype.catch()

该方法相当于 then 方法的第二个参数,指向 reject 的回调函数。 另一个作用是在执行resolve回调函数时,如果出错,抛出异常,不会停止运行,而是进入catch 方法中。

catch 只接受一个参数,也就是 rejected 抛出的值,一般用于异常处理。传统的try/catch捕获不了Promise内部的异常的,因为抛出异常这个动作是异步的。在处理异常的时候,我们可以在catch中进行异常的捕获,也可以直接抛出异常。

p.then((data) => { console.log('resolved',data);},(err) => { console.log('rejected',err); }); p.then((data) => { console.log('resolved',data);}).catch((err) => { console.log('rejected',err);});all()

Promise 的 all 方法提供了并行执行异步操作的能力,在 all 中所有异步操作结束后才执行回调。

function p1() { var promise1 = new Promise(function (resolve, reject) { console.log("p1的第一条输出语句"); resolve("p1完成"); }); return promise1;}function p2() { var promise2 = new Promise(function (resolve, reject) { console.log("p2的第一条输出语句"); setTimeout(() => { console.log("p2的第二条输出语句"); resolve("p2完成"); }, 2000); }); return promise2;}function p3() { var promise3 = new Promise(function (resolve, reject) { console.log("p3的第一条输出语句"); resolve("p3完成"); }); return promise3;}Promise.all([p1(), p2(), p3()]).then(function (data) { console.log(data);});

输出结果:

p1的第一条输出语句;p2的第一条输出语句;p3的第一条输出语句;p2的第二条输出语句[("p1完成", "p2完成", "p3完成")];链式调用

链式调用的过程中 then() 方法或 catch() 方法的回调的返回值会作为下一个 then() 方法的回调的参数,无返回值也可继续 .then(),如果没有错误,catch 方法将发生穿透。

new Promise((resolve, reject) => { resolve('请求成功了'); }) .then((value) => { console.log(value); return new Error('错误'); }) .catch(() => { console.log('错误'); //未打印,发生穿透 }) .then((value) => { console.log(111); }) .then((value) => { console.log(222); })

本文链接地址:https://www.jiuchutong.com/zhishi/296129.html 转载请保留说明!

上一篇:React 框架(react框架和vue哪个用的人多)

下一篇:波尔图,葡萄牙 (© Kanuman/Shutterstock)(波尔图葡萄牙语)

  • 大众点评怎么排队取号(大众点评怎么排位)

    大众点评怎么排队取号(大众点评怎么排位)

  • 小米mix3miui12小米闻声如何打开(小米mix3 12.5)

    小米mix3miui12小米闻声如何打开(小米mix3 12.5)

  • qq回执编号在哪里查(qq回执编号在哪里)

    qq回执编号在哪里查(qq回执编号在哪里)

  • 安卓微信聊天记录怎么恢复到另一个手机(安卓微信聊天记录怎么转移到苹果)

    安卓微信聊天记录怎么恢复到另一个手机(安卓微信聊天记录怎么转移到苹果)

  • 对方关机了怎么查位置(对方关机了怎么联系他)

    对方关机了怎么查位置(对方关机了怎么联系他)

  • 锐龙73750h什么水平(锐龙7 3750什么水平)

    锐龙73750h什么水平(锐龙7 3750什么水平)

  • yy地域限制不能语音(yy有地域限制吗)

    yy地域限制不能语音(yy有地域限制吗)

  • 硬盘磁头坏了症状(硬盘磁头坏了有什么表现?-zol问答)

    硬盘磁头坏了症状(硬盘磁头坏了有什么表现?-zol问答)

  • 手机电池老化的表现(手机电池老化的五大症状)

    手机电池老化的表现(手机电池老化的五大症状)

  • 荣耀play4t怎么设置返回键(荣耀play4t怎么设置热点连接人数)

    荣耀play4t怎么设置返回键(荣耀play4t怎么设置热点连接人数)

  • 爱奇艺付费电影可以下载吗(爱奇艺付费电影能用点播券吗)

    爱奇艺付费电影可以下载吗(爱奇艺付费电影能用点播券吗)

  • 抖音一音浪等于多少钱(抖音一音浪等于好多钱)

    抖音一音浪等于多少钱(抖音一音浪等于好多钱)

  • 新浪微博账号能注销吗(新浪微博账号能改名字吗)

    新浪微博账号能注销吗(新浪微博账号能改名字吗)

  • 抖音怎么看哪些人看过我的作品(抖音怎么看哪些人取关了自己)

    抖音怎么看哪些人看过我的作品(抖音怎么看哪些人取关了自己)

  • 苹果耳机怎样调上下曲(苹果耳机怎样调节下一曲)

    苹果耳机怎样调上下曲(苹果耳机怎样调节下一曲)

  • 取消特别关心对方会知道吗(我取消特别关心别人会收到通知吗?)

    取消特别关心对方会知道吗(我取消特别关心别人会收到通知吗?)

  • iphone11pro与iphone11区别(iPhone11pro与iPhone12哪个好)

    iphone11pro与iphone11区别(iPhone11pro与iPhone12哪个好)

  • 蚂蚁森林怎么恢复(蚂蚁森林怎么恢复原来界面)

    蚂蚁森林怎么恢复(蚂蚁森林怎么恢复原来界面)

  • 2000毫安等于多少安(2000毫安等于多少瓦)

    2000毫安等于多少安(2000毫安等于多少瓦)

  • 为什么搜索手机号找不到微信(为什么搜索手机号搜不到微信)

    为什么搜索手机号找不到微信(为什么搜索手机号搜不到微信)

  • 主机电源风扇不转(主机电源风扇不转是什么原因)

    主机电源风扇不转(主机电源风扇不转是什么原因)

  • 已发的朋友圈怎么设置权限(已发的朋友圈怎么设置私密)

    已发的朋友圈怎么设置权限(已发的朋友圈怎么设置私密)

  • 点云3D目标检测之——尝试SFD代码跑通(超详细!!)(点云目标检测数据集)

    点云3D目标检测之——尝试SFD代码跑通(超详细!!)(点云目标检测数据集)

  • 2022年windows11windows10最强VMware Workstation 16 Pro for Windows虚拟机软件最新授权版16.2.3-19376536版本

    2022年windows11windows10最强VMware Workstation 16 Pro for Windows虚拟机软件最新授权版16.2.3-19376536版本

  • 行政事业单位转账至个人账户条例
  • 税控盘的功能特点是
  • 企业税分几种类型
  • 缴纳税收凭证有原件吗
  • 会计哪些账本需要保存
  • 交易性资产入账金额和入账金额区别
  • 为什么对子公司长投要用成本法
  • 股票交易费用计入
  • 筹备期间人工成本怎么算
  • 进口设备消费税税率是多少
  • 未入账凭证
  • 开发间接费什么时候计提
  • 商场促销的税务处理怎么做?
  • 非独立核算的分公司如何报税
  • 路桥年费税额抵扣账务处理怎么做?
  • 补计提以前年度增值税
  • 印花税的计税依据含增值税吗
  • 房产税缴纳时间规定
  • 公户转账备注写错会查吗
  • 处置的固定资产
  • 收到支票怎么处理
  • 出口退税的会计分录实例
  • 基本户是否可以冻结
  • 默认网关不可用的解决办法
  • 房地产企业困境
  • 其他业务收入借贷方向
  • php单例模式demo
  • php imagettftext()函数
  • 广播影视服务需要许可证吗
  • ensp综合实验配置
  • 过来人告诉你:女人最珍贵的三种东西,舍得给你说明爱你
  • 前端工程化解决方案
  • 如何更改电子税务局办税人员
  • 代开增值税发票需要预交所得税吗
  • vue3+ts+MicroApp实战教程
  • 增值税抵扣环节
  • 进项税加计抵扣政策2023年
  • 结转成本是什么凭证
  • 母公司无偿借款给子公司
  • 什么叫代销合同
  • 查补以前年度所得税
  • 建筑公司挂靠单位的财务处理是?
  • 员工自动辞职有工龄工资吗
  • 购买专利后有占有权吗
  • 企业收到委托开具发票
  • 高价购买股权
  • 企业软件开发哪家好
  • 固定资产不能使用了怎么处理
  • 固定资产报废需要进项税额转出吗
  • 支票为什么不能取钱
  • 在mysql中使用视图的限制
  • windows主进程rundll32总是用麦克风
  • win8.1开机进入桌面
  • windowsxp教程
  • bios怎么设置efi引导
  • win8系统教程
  • 怎么激活win7旗舰版系统
  • linux tracker
  • 苹果笔记本mac系列区别
  • debian linux教程
  • linux chakan
  • 屏蔽触摸按键什么意思
  • cocos2d游戏源码
  • unity发布exe
  • Windows下自动备份MongoDB的批处理脚本
  • 第四章之BootStrap表单与图片
  • android webview获取文本
  • shell脚本指南
  • css分页样式
  • javascript基础入门教程
  • python生成txt文档
  • jquery怎么遍历
  • jquery search
  • jquery网页制作
  • python3获取本机ip
  • javascript怎么学
  • 生产者消费者的作用
  • 建筑单位外地缴税
  • 光明区新区
  • 企业税收筹划的基本目标
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设