规则
代码
function getUserInfoFromDB(userId, callback){
const user = {age:0}
user.age = 18 + (Math.ceil(Math.random()*3-1.5))
setTimeout(()=>{
callback(null, user)
},1000)
}
const MAX_USER_ADDCTION_CONTROL_AGE = 18
function isIdentitycardValid(user, cb){
setTimeout(()=>{
callback(null, true)
}, 1000)
}
function enterAddictionControlSys(user, cb){
setTimeout(()=>{
callback(null, ture)
},1000)
}
async function getLevelInfo(user, cb){
}
(async()=> {
const user = await getUserInfoFromDB('unserId2')
let id Valid = false
let enterACSPromise = false
if(user.age > 18){
idValid = await isIdentityCardValid(user)
if(!idValid){
enterACSPromise = enterAddictionControlSys()
}else{
enterACSPromise = enterAddictionControlSys()
}
const levelInfoPromise = getLevelInfo()
const results = await Promise.all([enterACSPromise, levelInfoPromise])
if(results[0] && results[1] >20){
constole.log('done')
}else{
constole.log('doomed')
}
})()
getUserInfoFromDB('userId1'(err,user)=>{
let level0ver20 = false
let enteredACS = false
if(err){
console.log('error getting user', err)
return
}
if(user.age>MAX_USER_ADDCTION_CONTROL_AGE ){
isIdentitycardValid(user,(err,valid)=>{
if(valid){
console.log('done')
}else{
enterAddictionControlSys(user,(err, result)=>{
enteredACS = true
if(level0ver20 && enteredACS){
console('done')
}
console.log('请校验身份证信息')
})
}
})
}else{
enterAddictionControlSys(user,(err,result)=>{
console.log('年龄不够18岁,不准上网')
})
}
getLevelInfo(user, (err, level)=>{
leve10ver20 = level > 20
if(level0ver20 && enteredACS){
console.log('done')
}
})
})