- await 后面接的代码为同步代码 下一行代码为异步代码
async function a() {
await b;
console.log(3);
}
function b() {
console.log(2);
}
a();
console.log(1);
function a() {
new Promise((resolve, reject) => {
function b() {
console.log(2);
}
b();
}).then((res) => {
console.log(3);
})
}
a();
console.log(1);
- await 后面的函数中没有返回执行状态,则后面的代码不会执行
const async1 = async () => {
console.log('1');
setTimeout(() => {
console.log('2');
})
await new Promise(resolve => {
console.log('3');
})
console.log('4');
return '5';
}
console.log('6');
async1().then(res => console.log(res));
console.log('7');
Promise.resolve(1)
.then(2)
.then(Promise.resolve(3))
.catch(4)
.then(res => console.log(res))
- Promise执行完成后才会赋值执行状态
a = new Promise(async (resolve) => {
resolve(true);
console.log(a);
await b;
console.log(a);
console.log(5);
await a;
console.log(6);
})
- Promise的 reject()会中断后面的执行,catch捕获后能正常执行
async function a(){
await new Promise((resolve, reject) => {
reject('222')
})
console.log('2');
return Promise.resolve('4');
}
a().then((res) => {
console.log(res)
})
console.log(5)
sync function a(){
await new Promise((resolve, reject) => {
reject('222')
}).catch((err) =>{
console.log(err)
});
console.log('2');
return Promise.resolve('4');
}
a().then((res) => {
console.log(res)
})
console.log(5)