es6的Promise对象

news/2024/7/11 1:37:32 标签: es6, javascript, 开发语言
  1. Promise是js中进行异步编程的解决方案

  2. Promise是一个构造函数

  3. Pormise对象可以封装异步操作,并能够返回成功/失败的结果值

  4. 优点
    ① 支持链式调用,可以解决回调地狱(回调函数嵌套回调函数)的问题

  5. 基本写法

    javascript">new Promise((resolve, reject) => {
    	// 封装异步任务
    	setTimeOut(() =>{
    		const num = Math.ceil(Math.random() * 10);
    		if (num > 5) {
    			resolve(num);
    		} else {
    			reject(num);
    		}
    	}, 2000);
    }).then(res => {
    	console.log(`值大于5,值为${res}`);
    },error => {
    	console.log(`值小于等于5,值为${error}`);
    });
    
  6. PromiseState:存储promise状态
    ① pending:未返回结果的状态
    ② resolved/fulfilled: 成功
    ③ rejected:失败

  7. new Promise.then(res => {}, error => {})
    第一个为成功的回调,第二个为失败的回调

  8. new Promise.catch(reject => {})
    失败的回调

  9. Promise.resolve(value)
    快速得到一个成功/失败的Promise对象

  10. Promise.reject(value)
    快速得到一个失败的Promise对象

  11. Promise.all([p1, p2])
    ① 传入的所有promise都为成功时,返回的Promise状态才为成功,结果为每个promise返回值的数组
    ② 传入的promise有一个为失败时,res状态就为失败,结果为第一个失败的promise返回值

  12. Promise.race([p1, p2])
    ① race有比赛的意思,返回值是第一个promise的结果
    ② 如果p1用定时器做了延时,那么p2就会先执行,最终的返回值是p2的值

  13. 给Promise指定多个then回调,状态相符的都会被执行

  14. 异常穿透:在链式调用的最后去指定异常的回调(catch),不管在中途哪个环节出现了错误,都会被最后的异常回调所识别到

  15. 中断Promise执行方式:return new Promise(() => {}); return一个等待状态的promise


http://www.niftyadmin.cn/n/124846.html

相关文章

Windows 10 - Django + simpleui项目实战 - 详细总结 导入导出-权限修改-修改登录界面-数据库优化-js触发事件失效奇葩问题

目录对django框架的内置功能的修改导入导出模块超级用户权限修改了解修改登录界面方法安装mysqlclient 性能优化,比pymysql模块更好报错 django.db.utils.OperationalError: (2026, SSL connection error: unknown error number)静态文件管理js问题 - onchange 和 o…

华为OD机试题,用 Java 解【数据分类】问题

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典使用说明 参加华为od机试,一定要注意不…

第六讲:ambari-web 模块二次开发

上述图片为 Ambari 部署及操作 hdp 集群相关的部分界面截图。这些页面如果想调整的话,比如汉化,二次开发等,则可以修改 ambari-web 模块的源码来实现。 一、介绍 ambari-web 模块涉及到的界面有: HDP 集群部署向导已安装服务的仪表板、配置界面等主机列表及详细信息告警列…

jconsole远程linux下的tomcat

修改Tomcat的配置 进去 Tomcat 安装目录下的 bin 目录,编辑 catalina.sh vi catalina.sh定位到 ----- Execute The Requested Command ----------------------------------------- vi 编辑模式下,点击 Esc,输入 / ,然后粘贴 -…

MyBatis-Plus 联表查询

mybatis-plus作为mybatis的增强工具,它的出现极大的简化了开发中的数据库操作,但是长久以来,它的联表查询 能力一直被大家所诟病。一旦遇到left join或right join的左右连接,你还是得老老实实的打开xml文件,手写上一大…

提高生活质量,增加学生对校园服务的需求,你知道有哪些?

随着电子商务平台利用移动互联网的趋势提高服务质量,越来越多的传统企业开始关注年轻大学生消费者的校园市场。 提高生活质量,增加学生对校园服务的需求 大学生越来越沉迷于用手机解决生活中的“吃、喝、玩、乐”等服务,如“吃、喝”——可…

又一新闻,Meta研发了超越chatGPT的新平台LLAMA

一、Meta 全新大语言模型 LLaMA 正通过种子公开发放2 月 24 日,Meta 公司发布了新的大模型系列 —— LLaMA(Large Language Model Meta AI)。Meta 宣称,LLaMA 规模仅为竞争对手 ChatGPT 的“十分之一”,但性能却优于 O…

idea downloading spring initializer下不来

图中url输入:https://plugins.jetbrains.com/ 原先是https://start.spring.io