async用来创建异步函数
async创建的异步函数中可以写同步代码并且同步执行
async特点:
---------
1.async修饰的函数,返回值被包装为promise
async function fn1() {
return 10
}
fn1().then()
2.async修饰的函数,可以使用await调用其他异步函数
await
调用await,会等待Promise执行出结果后将结果返回
await并不是将异步函数转变为同步函数,只是改变了异步函数调用方式(以前用.then(),现在用await)
使用await时,不能用.catch(),只能用try…catch
await使用位置
-----------
1.async声明的异步函数里 ,不会阻塞其他进程
async function fn2() {
try {
return await fn1()
} catch(e) {
console.log('await中用try-catch捕获');
}
}
fn2();
// 红绿灯示例
const timer = (color, delay, next) => {
return Promise((resolve) => {
console.log(`现在是${color}灯,等待${delay}秒变为${next}灯`);
setTimeout(() => {
resolve();
}, delay * 1000);
});
};
async function light() {
await timer('红', 3, '绿');
await timer('绿', 5, '黄');
await timer('黄', 2, '红');
await light();
}