// 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())
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