ES6 - Promise

​        在MDN文档中,Promise是一个对象,代表一个异步操作的最终完成或者失败。在网上大多ES6教程中,认为Promise是异步编程的一种解决方案,从语法上说是一个对象,从它可以获取异步操作的消息。

  

  了解promise的工作方式文档https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Using_promises

内容提要:

  • 原理:本质上Promise是一个函数返回的对象,我们可以在它上面绑定回调函数,这样我们就不需要在一开始把回调函数作为参数传入这个函数了。
  • 拒绝事件:当 Promise 被拒绝时,会有已定义的两个事件(rejectionhandled,unhandledrejection)之一被派发到全局作用域
  • 链式调用:连续执行两个或者多个异步操作
  • 组合:Promise.all() 和 Promise.race() 是并行运行异步操作的两个组合式工具。
  • 时序:为了避免意外,即使是一个已经变成 resolve 状态的 Promise,传递给 then() 的函数也总是会被异步调用
  • 嵌套:简便的 Promise 链式编程最好保持扁平化
  • 常见错误

 

   Promise构造函数以及此类对象的方法和属性:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise

内容提要:

  • Promise Constructor:构造函数主要是用于包装还未支持promises的函数
  • Promise的三种状态:pending, fulfilled, rejected
  • 方法
  • Promise原型
  • 创建Promise

 

  阮一峰的ES6教程: https://es6.ruanyifeng.com/#docs/promise

内容提要:

  • Promise的含义
  • 基本用法:代码举例
  • then方法
  • catch方法
    • Promise 对象的错误具有“冒泡”性质
    • reject()方法的作用,等同于抛出错误
    • 一般来说,不要在then()方法里面定义 Reject 状态的回调函数(即then的第二个参数),总是使用catch方法
    • 如果没有使用catch()方法指定错误处理的回调函数,Promise 对象抛出的错误不会传递到外层代码,即不会有任何反应
  • finally方法:用于指定不管 Promise 对象最后状态如何,都会执行的操作
  • all方法:用于将多个 Promise 实例,包装成一个新的 Promise 实例
  • race方法:将多个 Promise 实例,包装成一个新的 Promise 实例 
  • allSettled方法:方法接受一组 Promise 实例作为参数,包装成一个新的 Promise 实例。只有等到所有这些参数实例都返回结果,不管是fulfilled还是rejected,包装实例才会结束。
  • any方法:只要参数实例有一个变成fulfilled状态,包装实例就会变成fulfilled状态;如果所有参数实例都变成rejected状态,包装实例就会变成rejected状态 
  • resolve方法
  • reject方法
  • 应用     
posted @ 2020-08-18 22:34  听说这是最长的名字了  阅读(127)  评论(0编辑  收藏  举报