Promise(二)

resolve参数

  1. 普通参数传递

    let promiseFn = ()=>{
      return new Promise((resolve,reject)=>{
        resolve( { name: 'nano' } )
      })
    }
    promiseFn().then( res => { console.log(res) } ) --> { name: 'nano' }

    注意: 一次只能传递一个参数

  2. 传递promise

    let promiseFn=() => {
    return new Promise((resolve,reject) => {
        resolve(new Promise((resolve,reject) => {
            resolve(111)
            reject(222)
        }))
      })
    }
    /* 如果是fulfilled状态 */
    promiseFn().then(res => {console.log(res)})  --> 111
    
    * 如果是rejected状态 */
    promiseFn().catch(err => {console.log(err)})  --> 222
    
    /* 如果是pending状态则.then或者.catch什么都不打印 */

    值得注意: 如果resolve传递的是promise函数,那么当前promise函数状态由resolve中传递的promise函数决定

  3. 传入一个对象并且对象中有then方法,那么当前promise函数的状态由对象中的then方法决定,并且该then函数自动创建resolve,reject两个参数

     let promiseFn=() => {
         return new Promise((resolve,reject) => {
           resolve({
             /* thenable */
             then(resolve,reject) {
               resolve(22)
               reject(33)
             }
           })
       })
    }
    promiseFn().then(res => {console.log(res)}) --> 22
    promiseFn().catch(res => {console.log(res)}) --> 33

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!