promise//
1.异步操作封装成1个函数
2.该函数返回promise 对象
3.通过链式调用解决异步问题
4.每个promise 对象有2个方法 then chath
5.中断链式调用 抛出一个错误让catch 捕获 reject() throw err
6.链式调用中的err 不会终止 程序执行成功执行reslove,执行外部的.then程序失败执行reject,执行外部的.catch程序
function fun1(){
setTimeout(()=>{
console.log(1)
setTimeout(()=>{
console.log(2)
setTimeout(()=>{
console.log(3)
},500)
},1000)
},3000)
}
function fun1(){
return new Promise((reslove,reject)=>{
setTimeout(()=>{
console.log(1)
if(true){
reslove(‘ok1’)
// 成功执行 reslove 可以触发外部的then 方法
}else{
reject(‘err1’)
// 失败执行 reject 可以触发外部的catch 方法
}
},1000)
})
}
function fun2() {
return new Promise((reslove,reject)=>{
setTimeout(()=>{
console.log(2)
if(true){
reslove(‘ok2’)
}else{
reject(‘err2’)
}
},500)
})
}
function fun3() {
return new Promise((reslove,reject)=>{
setTimeout(()=>{
console.log(3)
if(true){
reslove(‘ok3’)
}else{
reject(‘err3’)
}
},100)
})
}
fun1()
.then((data)=>{
//fun1 成功执行
console.log(data)
return fun2()
})
.then((data)=>{
//fun2 成功执行
console.log(data)
return fun3()
})
.then((data)=>{
//fun3 成功执行
console.log(data)
throw new Error(‘err’)
})
.then(()=>{
console.log(‘你好’)
})
.catch((err)=>{
console.log(2222)
})