一,基础用法
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'