promise API

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

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

    3.promise.prototype.catch方法:(onRejected) => {}
      onRejected函数:失败的回调函数(reason) => {}
      说明:then()的语法糖,相当于then(undefined,onRejected)

    4.Promise.resolve方法:(vale) => {}
      value:成功的数据或promise对象
      说明:返回一个成功/失败的promise对象

    5. Promise.reject方法(reason) => {}
        reason:失败的原因
        说明:返回一个失败的promise对象

    6. Promise.all方法: (promises) => {}
        promises: 包含n个promise的数组
        说明: 返回一个新的promise, 只有所有的promise都成功才成功

    7. Promise.race方法: (promises) => {}
        promises: 包含n个promise的数组
        说明: 返回一个新的promise, 第一个完成的promise的结果状态就是最终的结果状态(并非是数组中的第一个,而是第一个完成的promise)
    new Promise((resolve, reject) => {
      setTimeout(() => {
        // 这两个方法只能执行一个,因为只能改变一次状态
        resolve('成功的数据') //resolve就像是一个传递数据的运输机
        reject('失败的数据') 
      }, 1000)
    })
      .then(
        value => {
          console.log('onResolved()1', value)
        }
      )
      .catch(
        reason => {
          console.log('onRejected()1', reason)
        }
      )



    const p1 = new Promise((resolve, reject) => {
      resolve(1)
    })
    const p2 = Promise.resolve(2)
    const p3 = Promise.reject(3)
    // p1.then( value => {console.log(value)} )
    // p2.then( value => {console.log(value)} )
    // p3.catch( reason => {console.log(reason)} )

    //const pAll = Promise.all([p1,p2,p3])
    const pAll = Promise.all([p1, p2])
    pAll.then(
      values => {
        console.log('all onResolved()', values)
      },
      reason => {
        console.log('all onRejected()', reason)
      }
    )


    const pRace = Promise.race([p1, p2, p3])
    pRace.then(
      value => {
        console.log('race onResolved()', value)
      },
      reason => {
        console.log('race onResolved()', reason)
      }
    )

 

posted @ 2020-04-27 15:26  天空003  阅读(170)  评论(0编辑  收藏  举报