ES6 promise理解

2020-06-07  本文已影响0人  老衲不生气

一、promise 是什么

1、Promise 是 JS 中解决异步编程的一种方案。

拓展:js中解决异步编程的方案有哪些?优缺点分别是什么?
)

简单的说,从语法上Promise 是一个构造函数;从功能上promise 对象用来封装一个异步操作并可以获取其结果

2、状态

promise有三种状态,分别是 pending(进行中)、resolved(成功)、rejected(失败)

promise的状态改变(只有2种, 只能改变一次)

二、为什么用promise

三、 怎样使用promise

  1. 主要API
    Promise构造函数: Promise (excutor) {}

(1) excutor 函数: 执行器 (resolve,reject)=>{}
(2) resolve 函数: 内部定义成功时我们调用的函数 value=>{}
(3) reject 函数: 内部定义失败时我们调用的函数 reason=>{}
说明:excutor 会在 Promise 内部立即同步回调,异步操作在执行器中执行

Promise.prototype.then方法: (onResolved, onRejected) => {}

(1) onResolved 函数: 成功的回调函数 (value)=>{}
(2) onRejected 函数: 失败的回调函数 (reason)=>{}
说明: 指定用于得到成功 value 的成功回调和用于得到失败 reason 的失败回调 返回一个新的 promise 对象
Promise.prototype.catch方法: (onRejected) => {}
(1) onRejected 函数: 失败的回调函数 (reason)=>{}
说明:then()的语法糖, 相当于:then(undefined,onRejected)

Promise.resolve方法: (value) => {}

(1) value: 成功的数据或 promise 对象
说明: 返回一个成功/失败的 promise 对象

Promise.reject方法: (reason) => {}

(1) reason: 失败的原因
说明: 返回一个失败的 promise 对象

Promise.all方法: (promises) => {}

(1) promises: 包含 n 个 promise 的数组
说明: 返回一个新的 promise, 只有所有的promise 都成功才成功, 只要有一个失败了就
直接失败

Promise.race方法: (promises) => {}

(1) promises: 包含 n 个 promise 的数组
说明: 返回一个新的 promise, 第一个完成的 promise 的结果状态就是最终的结果状态

四、拓展 async与await

  1. async 函数
    函数的返回值为promise对象
    promise对象的结果由async函数执行的返回值决定

  2. await 表达式
    await右侧的表达式一般为promise对象, 但也可以是其它的值
    如果表达式是promise对象, await返回的是promise成功的值
    如果表达式是其它值, 直接将此值作为await的返回值

  3. 注意:
    await必须写在async函数中, 但async函数中可以没有await
    如果await的promise失败了, 就会抛出异常, 需要通过try...catch来捕获处理

五、事件循环

微任务包括:MutationObserver、Promise.then()或catch()、Promise为基础开发的其它技术,比如fetch API、V8的垃圾回收过程、Node独有的process.nextTick。

宏任务包括:script 、setTimeout、setInterval 、setImmediate 、I/O 、UI rendering。

上一篇 下一篇

猜你喜欢

热点阅读