Promise先指定回调函数还是先改变状态?

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如果先改变状态,当指定回调函数时,调用回调函数,得到数据

猜你喜欢

转载自blog.csdn.net/yrfjygb/article/details/113882967