位置: 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)(波尔图葡萄牙语)

  • 励志故事演讲稿(励志故事演讲稿300字左右)

    励志故事演讲稿(励志故事演讲稿300字左右)

  • 抖音怎么只发一张照片(抖音怎么只发一次视频)

    抖音怎么只发一张照片(抖音怎么只发一次视频)

  • qq关联要验证码怎么办(qq关联验证码怎么关)

    qq关联要验证码怎么办(qq关联验证码怎么关)

  • 锁屏签名怎么换位置(锁屏签名怎么换颜色)

    锁屏签名怎么换位置(锁屏签名怎么换颜色)

  • 迅雷面对面快传在哪里(迅雷面对面快传没有了)

    迅雷面对面快传在哪里(迅雷面对面快传没有了)

  • 屏幕进水有竖线会自己消失吗(屏幕进水有竖线可以充电吗)

    屏幕进水有竖线会自己消失吗(屏幕进水有竖线可以充电吗)

  • 淘宝直播如何快速升挚爱(淘宝直播如何快速上链接)

    淘宝直播如何快速升挚爱(淘宝直播如何快速上链接)

  • 抖音开店要钱吗(抖音开店要钱吗安全吗)

    抖音开店要钱吗(抖音开店要钱吗安全吗)

  • 京东代付的钱退到哪里(京东代付的钱退给谁)

    京东代付的钱退到哪里(京东代付的钱退给谁)

  • word 2010文档的编辑限制包括(word文档的编辑与排版)

    word 2010文档的编辑限制包括(word文档的编辑与排版)

  • 荣耀v30pro有红外线吗(荣耀x30红外线)

    荣耀v30pro有红外线吗(荣耀x30红外线)

  • 微信怎么解绑银行卡(微信怎么解绑银行卡步骤)

    微信怎么解绑银行卡(微信怎么解绑银行卡步骤)

  • 抖音雷区有哪些(必须了解的抖音雷区)

    抖音雷区有哪些(必须了解的抖音雷区)

  • ipadair3支持18w快充吗(ipadair3支持多少瓦的快充)

    ipadair3支持18w快充吗(ipadair3支持多少瓦的快充)

  • 软件有什么两部分组成(软件有什么和什么两部分组成)

    软件有什么两部分组成(软件有什么和什么两部分组成)

  • 从icloud恢复什么意思(apple从icloud恢复)

    从icloud恢复什么意思(apple从icloud恢复)

  • 手机显示lte怎么改回4g(手机显示LTE怎么回事)

    手机显示lte怎么改回4g(手机显示LTE怎么回事)

  • mac如何安装word(mac如何安装python第三方库)

    mac如何安装word(mac如何安装python第三方库)

  • 拼多多的金猪怎样删除(拼多多金猪怎么没有了)

    拼多多的金猪怎样删除(拼多多金猪怎么没有了)

  • word如何设置目录索引(word如何设置目录范围)

    word如何设置目录索引(word如何设置目录范围)

  • 淘宝喵铺怎么进(淘宝喵铺怎样退出队伍)

    淘宝喵铺怎么进(淘宝喵铺怎样退出队伍)

  • iphone有八核处理器吗(iphone 8核)

    iphone有八核处理器吗(iphone 8核)

  • 怎么修改网页编码(网页 修改)

    怎么修改网页编码(网页 修改)

  • 抠图后怎么统一肤色(抠图怎么整)

    抠图后怎么统一肤色(抠图怎么整)

  • win10诊断策略服务未运行(win10诊断策略服务未运行无法上网错误5)

    win10诊断策略服务未运行(win10诊断策略服务未运行无法上网错误5)

  • 苹果抬手唤醒怎么设置(苹果抬手唤醒耗电吗)

    苹果抬手唤醒怎么设置(苹果抬手唤醒耗电吗)

  • 键盘各键的作用(键盘各键的作用的讲解图)

    键盘各键的作用(键盘各键的作用的讲解图)

  • Vue实现登录功能全套详解(含封装axios)(vue实现登陆)

    Vue实现登录功能全套详解(含封装axios)(vue实现登陆)

  • 个体工商户季度不超过30万免增值税吗
  • 自然人独资公司和个人独资企业区别
  • 融单是什么意思
  • 资产负债表里是科目还是项目
  • 纳税人出租不动产预缴税款
  • 有哪些扣除项目可以抵扣
  • 营改增结束了吗
  • 工资扣款做什么科目
  • 债务豁免的会计分录
  • 事业单位收到增资款
  • 印花税的基数及标准是多少?
  • 季度销售额不超过30万,城建税减免
  • 临时人员工资需交税吗
  • 零售超豪华小汽车交消费税吗
  • 债转股需不需要交税
  • 税率征收率的区别
  • 企业出差补助需要缴纳个人所得税吗?
  • 劳务派遣 税务
  • 服务行业营业成本占比
  • 内账增值税会计核算
  • 工商年报中企业税费缴纳怎么填写
  • 华为鸿蒙系统如何刷机
  • 保护电脑安全的主要方式
  • 销售净利率的计算公式有哪些
  • 电脑找不到ie浏览器
  • 浅谈linux的发展方向和应用范围
  • 微软输入法繁体字变简体字
  • 无法安装字体,显示字体无效win10
  • 前端get请求传多个参数
  • php实现ping功能
  • 出口信用保险补贴算不算政府补助
  • 代开发票所需的资料?
  • pdo_mysql
  • jquery和php
  • thinkphp跨域解决方案
  • php点击复制代码
  • 小规模纳税人本年累计金额
  • 大前端技术
  • 旅游业哪些发票需要交税
  • 员工不小心重复报销了
  • 逐帧flash动画
  • 怎么算长期合同
  • 织梦使用教程
  • 年终奖怎么缴纳
  • 耕地占用税如何计算
  • 固定资产清理的含义
  • 发票申领多久才可以批
  • 固定资产改造的配件怎么入账
  • 跌价准备如何入库
  • 如何冲减计提费用
  • 房产税怎么实行
  • 应收账款计提减值准备会计处理
  • 零余额账户怎么对账
  • 银行交党费属于什么业务
  • 增值税发票过期一年未认证怎么办
  • 错帐的查找方法
  • 库存商品用于研发分录
  • 收到赠送的东西,并给员工自用,怎么做账
  • 在linux操作系统中,/etc/rc.d/init.d
  • crypt什么文件
  • 老毛桃U盘启动盘工具安装Win8的详细图文教程
  • 明日之后白树高地怎么钓凤尾鱼
  • mac10.95升级
  • win10预览版绿屏重启解决
  • linux配置静态
  • bootstrap treeview 扩展addNode方法动态添加子节点的方法
  • 浅谈自己对教育的理解
  • 在解决ul居中问题时想到的几点
  • 反序存放字符串
  • 三消游戏规则
  • unity preferences
  • 安卓白屏问题有哪些
  • 仿微信语音聊天
  • python爬取前程无忧
  • 小程序河南税务局
  • 增值税税控开票软件密码不知道了怎么办
  • 网上怎么变更
  • 扬州儿童社保卡
  • 7.1税务新政策
  • 河北税务交社保显示未找到对应的城乡居民应缴费额配置
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设