1.都有可能,正常情况下是先指定回调函数再改变,也有可能先改变状态再指定回调函数
2.如何先改变状态再指定回调?
2.1 在执行器中直接调用resolve()/reject()
let p = new Promise((resolve,reject) => {
resolve('ok')
})
p.then(value => {
console.log(value);
})
2.2 延迟更长时间才调用then(),加个定时器
let p = new Promise((resolve,reject) => {
setTimeout(function(){
resolve('ok')
},1000)
})
setTimeout(function(){
p.then(value => {
console.log(value);
})
},3000)
3.如何先指定回调再改变状态?
3.1在执行器中直接调用异步调用relove()/reject()
let p = new Promise((resolve,reject) => {
setTimeout(function(){
resolve('ok')
},1000)
})
p.then(value => {
console.log(value);
})
4.什么时候才能得到数据?
4.1 如果先指定回调函数,当状态发生改变的时候,调用回调函数,得到数据
4.2如果先改变状态,当指定回调函数时,调用回调函数,得到数据