const createPr = ()=>{
const pr = new Promise((resolve,reject)=>{
setTimeout(() => {
resolve('11')
}, 2000);
})
pr.then((res)=>{//<--------
console.log('c1',res);// c1 11
return '22'
})
return pr
}
createPr().then((res)=>{
console.log('c2',res);// c2 11
})
const createPr = ()=>{
const pr = new Promise((resolve,reject)=>{
setTimeout(() => {
resolve('11')
}, 2000);
}).then((res)=>{//<--------
console.log('c1',res);// c1 11
return '22'
})
return pr
}
createPr().then((res)=>{
console.log('c2',res);// c2 22
})
为什么这俩种不同写法会导致then拿到的值不同呢?
所有then方法都会重新实例化一个Promise对象
第一种写法,pr是new Promise()的实例化对象,执行pr.then方法,会将回调按顺序保存在队列中,resolve的时候依次执行
第二种写法,new Promise().then,执行完后返回的是then方法返回的Promise实例,而不是new Promise()的实例