async 是“异步”的简写,而 await 可以认为是 async wait 的简写。所以应该很好理解 async用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成
简单理解
- async 是让方法变成异步。
- await 是等待异步方法执行完成。
详细说明
- async 是让方法变成异步,在终端里用 node 执行这段代码,你会发现输出了 Promise {‘Hello async’ },这时候会发现它返回的是 Promise。
1
2
3
4
5
6
7
8async function testAsync(){
return 'Hello async';
}
const result = testAsync();
//跟Promise差不多
result.then((data=>{
console.log(data);//Hello async
})) - await 在等待 async 方法执行完毕,其实 await 等待的只是一个表达式,这个表达式在官方文档里说的是 Promise 对象,但是它也可以接受普通值。 注意:await 必须在 async 方法中才可以使用因为await 访问本身就会造成程序停止堵塞,所以必须在异步方法中才可以使用
1
2
3
4
5
6
7
8
9
10
11
12function findData() {
return new Promise(resolve => {
setTimeout(() => resolve("long_time_value"), 1000);
});
}
async function test() {
const v = await findData();
console.log(v);
}
test();//long_time_value