const async1 = async () => {
console.log('async1');
setTimeout(() => {
console.log('timer1')
}, 2000)
await new Promise(resolve => {
console.log('promise1')
})
console.log('async1 end')
return 'async1 success'
}
console.log('script start');
async1().then(res => console.log(res));
console.log('script end');
Promise.resolve(1)
.then(2)
.then(Promise.resolve(3))
.catch(4)
.then(res => console.log(res))
setTimeout(() => {
console.log('timer2')
}, 1000)
解析
需要注意的点:
- async函数中await的
new Promise
要是没有返回值的话则不执行后面的内容
- .then函数中的参数期待的是函数,如果不是函数的话会发生透传
- 注意定时器的延迟时间
结果
'script start'
'async1'
'promise1'
'script end'
1
'timer2'
'timer1'