一、Promise是什么?

  • 理解

    • 抽象表达:

      • Promise 是一门新的技术(ES6 规范)

      • Promise 是 JS 中进行异步编程的新解决方案(备注:旧方案是单纯使用回调函数)

    • 具体表达:

      • 从语法上来说: Promise 是一个构造函数

      • 从功能上来说: promise 对象用来封装一个异步操作并可以获取其成功/失败的结果值

  • promise 的状态改变

    • pending 变为 resolved

    • pending 变为 rejected

    • 说明: 只有这 2 种, 且一个 promise 对象只能改变一次无论变为成功还是失败, 都会有一个结果数据,成功的结果数据一般称为 value, 失败的结果数据一般称为 reason。

二、Promise 构造函数的基本用法

const p = new Promise((resolve, reject) => {
if (...) { // succeed
resolve(result);
} else { // fails
reject(Error(errMessage));
}
}); p.then(value => {
  console.log(value.toString())
},reason => {
  console.log(reason)
})

三、为什么要用Promise?

  • 指定回调函数的方式更加灵活

    • 旧的: 必须在启动异步任务前指定

    • promise: 启动异步任务 => 返回 promie 对象 => 给 promise 对象绑定回调函数(甚至可以在异步任务结束后指定多个)

  • 支持链式调用, 可以解决回调地狱问题

    • 什么是回调地狱?
      • 回调函数嵌套调用, 外部回调函数异步执行的结果是嵌套的回调执行的条件,格式上不断地进行缩进。
    • 回调地狱的缺点?
      • 不便于阅读

      • 不便于异常处理

    • 解决方案?
      • promise 链式调用
    • 终极解决方案?

      • async/await

最新文章

  1. Extjs jar包问题
  2. 二模 (6) day2
  3. JAVA中StringBuffer类常用方法详解
  4. python练习程序(c100经典例7)
  5. ASP.NET(C#)常用数据加密和解密方法汇总
  6. c#调用钩子
  7. Django模板-分离的模板
  8. Ansible@一个有效的配置管理工具--Ansible configure management--翻译(四)
  9. C# typeof() 和 GetType()区别
  10. 使用NPOI写入Excel数据(ASP.NET)
  11. WindowXp-Windows7-Windows运行命令(转)
  12. Wpf开源收集
  13. Django之用户上传文件的参数配置
  14. java lang(Thread) 和 Runable接口
  15. nodejs 利用zip-local模块压缩文件夹
  16. 一、VS2017支持Github
  17. VC9、VC11、VC14、VC15库 32位 64位 免费下载
  18. 2019.03.04 bzoj5308: [Zjoi2018]胖(二分答案+st表)
  19. log4j的详细配置(最省心完美配置)
  20. MongoDB ----基于分布式文件存储的数据库

热门文章

  1. jeecgboot-vue3笔记(八)——treeSelect树形选择组件的使用(一次性加载)
  2. Kafka消息的压缩机制
  3. GDKOI 2021 Day3 PJ 懵逼记
  4. mac M1 php扩展 xlswriter 编译安装爬坑记录
  5. 02 RESTFul接口和HTTP的幂等性分析
  6. Elasticsearch学习系列三(搜索案例实战)
  7. 2分钟实现一个Vue实时直播系统
  8. labview从入门到出家4--用事件结构实现运算功能
  9. 洛谷P2709 小B的询问 莫队做法
  10. nginx 日志按日期分隔