Promise

99 阅读1分钟
// pending=>fulfilled
// pending=>rejected

var fn=()=>{
  return new Promise((resolve,reject)=>{
    
  })
}
console.log(fn,fn()) 


var fn1=()=>{
  return new Promise((resolve,reject)=>{
    resolve()
  })
}
console.log(fn1,fn1()) 


var fn2=()=>{
  return new Promise((resolve,reject)=>{
    reject()
  })
}

console.log(fn2,fn2()) 

异步

var fn=()=>{
  return new Promise((resolve,reject)=>{
    
    setTimeout(()=>{
      resolve() 
      console.log(1)},2000)
  
  })
}
console.log(fn,fn()) 

image.png

var fn=()=>{
  return new Promise((resolve,reject)=>{
   
  })
}
fn()
  .then(()=>{console.log('then')})
  .catch(()=>{console.log('catch')}) 
//pending状态不执行.then .catch

var fn1=(()=>{
  return Promise.resolve()
})
fn1()
  .then(()=>{console.log('fn1 then')})
  .catch(()=>{console.log('fn1 catch')}) 
//fulfilled状态执行.then 不执行.catch

var fn2=()=>{
  return new Promise((resolve,reject)=>{
   reject()
  })
}

fn2()
  .then(()=>{console.log('fn2 then')})
  .catch(()=>{console.log('fn2 catch')}) 
  //rejected状态执行.catch 不执行.then

对于then catch

var p1 = Promise.resolve()
console.log('p1',p1)

var res1 =p1.then(()=>{
  console.log('p1 then')
})

setTimeout(()=>{
  console.log('res1',res1)  // 返回fulfilled状态的Promise
})

var res2 =p1.then(()=>{
  throw new Error('err')
})

setTimeout(()=>{
  console.log('res2',res2)  // 返回rejected状态的Promise
})



var p2 = Promise.reject()
console.log('p2',p2)

var res3 =p2.catch(()=>{
  console.log('p2  catch')
})

setTimeout(()=>{
  console.log('res3',res3)  // 返回fulfilled状态的Promise
})

var res4 =p2.catch(()=>{
  throw new Error('err')
})

setTimeout(()=>{
  console.log('res4',res4)  // 返回rejected状态的Promise 
})

总结 .then .catch里面没有抛出异常 p.then p.catch 返回的值就是fulfilled状态的Promise ,反之就是rejected状态的Promise