先用settimeout和promise模拟异步
function one(){
return 'I am one'
}
function two(){
setTimeout(()=>{
return 'two'
},1000)
}
//改写two()
function four(){
return new Promise( (resolve, reject)=>{
setTimeout(() => {
resolve('I am two')
}, 2000);
} )
}
function three(){
return 'I am three'
}
function run(){
console.log(one())
//console.log不会等settimeout
console.log(two()) //->undefined
//改写two()的输出
console.log(four()) //->promise
console.log(three())
}
run()
上面two和four都没有得到正确的输出结果,分别输出了undefined和promise
改造run后
async function serve(){
console.log('改造run方法')
console.log(one())
console.log( await four()) //会等待2秒得到结果
console.log(three())
}
serve()
正确输出结果:
I am one
I am two
I am three