ES6语法 -- Promise初识(一)

概念

Promise 是一种异步编程的解决方案

Promise 相关知识点

  1. Promise对象是一个构造函数,用来生成Promise实例。可以直接用 new 一元运算符来运行,并申明一个变量( 假如是 P )来储存promise返回出来的对象(P 也称之为 promise 对象)
  2. 构造函数接收一个回调函数,这个回调函数接收2个参数,一个 resolve(成功), 一个 reject(失败) ;
  3. 回调函数中,可以写一些异步操作,比如setTimeout 或者 ajax 请求之类的
  4. promise 执行之后返回的 promise 对象 P 下 有一个 .then 的方法,用来注册我们成功状态下要完成的函数,或者是失败状态下要完成的函数
  5. .then 接收两个参数,都是函数;第一个函数是调用resolve之后会执行的函数, 第二个函数是调用 reject 之后会执行的函数
  6. resolve 中 可以接收 简单类型的值, 也可以接收 promise 对象, 或者是 thenable 对象
  7. 当给 resolve 传入一个promise 对象的时候, 只有等到 promise 对象转成 成功 或者 失败,resolve 才会成功当给 resolve 传入一个promise 对象的时候, 只有等到 promise 对象转成 成功 或者 失败,resolve 才会成功
  8. .then 中成功或者是失败执行的函数的返回值

返回一个简单类型的的返回值,作为then方法返回的 promise 对象的成功状态的值
返回一个 thenable 对象的时候, 只是成功状态才能执行下一个 .then


promise 的三种状态

pengding : 正在进行,暂时还不知道是否会成功或者失败
fulfilled : 已经完成,异步操作完成之后,如果调用的是 resolve 则执行的是成功的事情
rejected : 已经失败,异步操作完成之后,如果调用的是reject 则执行的是失败的事情


promise 的特点

① 对象的状态不受外界影响: promise 有三种状态,决定当前是哪一种状态取决于异步操作的结果,其他任何操作都无法改变这个状态

② 状态一旦改变,就不会再变: Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected,不会有其他的改变情况

③ 不可取消: promise 一旦新建它就会立即执行,无法中途取消

④ 如果不设置回调函数,Promise内部抛出的错误,不会反应到外部

⑤当处于pending状态时,无法得知目前进展到哪一个阶段(刚刚开始还是即将完成)


promise 的 链式操作

如果我们需要多次调用 .then 方法, 可以写多次 P.then ( ); P.then ( ); P.then ( );
也可以直接用链式操作: P.then( ).then( ).then( );


thenthenable

概念: 在一个对象,或者函数中 有.then 函数

{
then( ){ }
}

猜你喜欢

转载自blog.csdn.net/weixin_43410419/article/details/83830503