async function async1() {
console.log('a');
await async2();
console.log('b');
}
async function async2(){
console.log('c');
}
console.log('d');
setTimeout(function(){
console.log('e')
}, 0);
async1();
new Promise(function (resolve) {
console.log('f');
resolve();
}).then(function() {
console.log('g');
})
console.log('h')
d a c f h b g e
function testPromise () {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve('成功!')
}, 1000)
setTimeout(() => {
reject('失败!')
}, 3000)
}).then((res) => {
console.log('First then:', res)
return 'From first then'
}).catch(err => {
console.log('First catch:', err)
return 'From first catch'
}).finally((res) => {
console.log('First finally', res)
return 'From first finally'
}).then((res) => {
console.log('Second then:', res)
return 'From second then'
}).catch(err => {
console.log('Second catch:', err)
return 'From second catch'
}).finally((res) => {
console.log('Second finally', res)
return 'From second finally'
}).then((res) => {
console.log('Third then:', res)
return 'From third then'
}).catch(err => {
console.log('Third catch:', err)
return 'From third catch'
}).finally((res) => {
console.log('Third finally', res)
return 'From third finally'
})
}
First then: 成功!
VM137:17 First finally undefined
VM137:20 Second then: From first then
VM137:26 Second finally undefined
VM137:29 Third then: From second then
VM137:35 Third finally undefined