Promise总结1

63 阅读1分钟

一,基础用法

function load(){    
      return new Promise((resolve, reject)=>{        
             setTimeout(() => {   
                  resolve("aaa")   
             }, 1000); 
      })
}

load().then((res)=>{   
        console.log("第1个then, res = ", res)   return 'bbb'}
)

以上代码输出是:第1个then, res = aaa

1. 先创建一个Promise对象,创建的时候必须传入一个函数,传入的这个函数要有两个参数:resolve 和 reject

2.调用Promise对象的then函数,它的参数是一个函数

3. 当调用resolve方法后,then里传入的那个函数会被执行,而它的参数res是resolve("aaa")传入的那个参数,这里就是"aaa"

二、链式调用

function load(){    
      return new Promise((resolve, reject)=>{         
           setTimeout(() => {            
               resolve("aaa")        
           }, 1000);    
      })
}

load().then((res)=>{      
    console.log("第1个then, res = ", res)      
    return 'bbb'
}).then((res)=>{  
    console.log("第2个then, res = ", res)  
}).then((res)=>{    
    console.log("第3个then, res = ", res)    
    return new Promise((resolve, reject)=>{        
         setTimeout(() => {           
               resolve("ccc")        
         }, 1000);    
    })
}).then((res)=>{
    console.log("第4个then, res = ", res)
})

上面代码中,第一个then传入的函数返回'bbb',就相当于then返回一个Promise.resolve('bbb'),第二个then里的res参数的值就是‘bbb’

第二个then传入的函数里没有返回任何东西,那么相当于是返回undefined,于是then返回值就相当于Promise.reslove(undefined), 所以第三个then里的res参数的值是undefined

第三个then传入的函数里返回一个Promise对象,那相当于then函数返回的就是这个Promise对象,所以第4个then里的 res参数就是'ccc'