<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
// promise 是用于解决回调低于的
/*
* promise 的状态:
* 待定(pending),初始状态,既没有被兑现,也没有被拒绝。
* 已兑现(fulfilled),操作完成
* 已拒绝(rejected),操作失败
*/
const isA = true
const isB = true
const isC = true
const isD = true
function A(){
return new Promise((resolve,reject)=>{
console.log(`执行接口 A 的逻辑`)
setTimeout(()=>{
if(isA){
resolve(`接口 A 执行完成`)
}else{
reject(`接口 A 执行失败`)
}
},1 * 1000)
})
}
function B(){
return new Promise((resolve,reject)=>{
console.log(`执行接口 B 的逻辑`)
setTimeout(()=>{
if(isA){
resolve(`接口 B 执行完成`)
}else{
reject(`接口 B 执行失败`)
}
},1 * 1000)
})
}
function C(){
return new Promise((resolve,reject)=>{
console.log(`执行接口 C 的逻辑`)
setTimeout(()=>{
if(isA){
resolve(`接口 C 执行完成`)
}else{
reject(`接口 C 执行失败`)
}
},1 * 1000)
})
}
function D(){
return new Promise((resolve,reject)=>{
console.log(`执行接口 D 的逻辑`)
setTimeout(()=>{
if(isA){
resolve(`接口 D 执行完成`)
}else{
reject(`接口 D 执行失败`)
}
},1 * 1000)
})
}
//链式调用
A()
.then(res=>{
console.log(res)
return B()
})
.then(res=>{
console.log(res)
return C()
})
.then(res=>{
console.log(res)
return D()
})
.then(res=>{
console.log(res)
})
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
const isA = true
const isB = true
const isC = true
const isD = true
function A(){
return new Promise((resolve,reject)=>{
console.log(`执行接口 A 的逻辑`)
setTimeout(()=>{
if(isA){
resolve(`接口 A 执行完成`)
}else{
reject(`接口 A 执行失败`)
}
},1 * 1000)
})
}
function B(){
return new Promise((resolve,reject)=>{
console.log(`执行接口 B 的逻辑`)
setTimeout(()=>{
if(isA){
resolve(`接口 B 执行完成`)
}else{
reject(`接口 B 执行失败`)
}
},1 * 1000)
})
}
function C(){
return new Promise((resolve,reject)=>{
console.log(`执行接口 C 的逻辑`)
setTimeout(()=>{
if(isA){
resolve(`接口 C 执行完成`)
}else{
reject(`接口 C 执行失败`)
}
},1 * 1000)
})
}
function D(){
return new Promise((resolve,reject)=>{
console.log(`执行接口 D 的逻辑`)
setTimeout(()=>{
if(isA){
resolve(`接口 D 执行完成`)
}else{
reject(`接口 D 执行失败`)
}
},1 * 1000)
})
}
async function test(){
const resA = await A()
console.log(resA)
const resB = await B()
console.log(resB)
const resC = await C()
console.log(resC)
const resD = await D()
console.log(resD)
}
test()
</script>
</body>
</html>