async函数和await的理解
理解async和await时,先理解Promise,因为是基于Promise
从生活中理解
想象你去餐馆吃饭。点菜和等待食物是一个异步的过程,因为你不必一直站在厨房等待食物做好。你可以坐下来,聊天,等待服务员通知你食物已经准备好。
- async 就像是告诉餐馆服务员:“我需要一份菜单,我将点餐,但不会一直等着,告诉我什么时候食物准备好。”
- await 就像是你坐在餐馆等待,直到服务员告诉你食物已经准备好,然后你开始享用美食。
从编程中理解
- async:异步,用于申明一个function是异步的
- await:而await则可以认为是 async await的简写形式,是等待一个异步方法执行完成的
async
//使用async声明一个方法
//在函数面前加上async表示这个函数为异步函数
//这个函数会返回Promise对象,Promise对象包含"你好"返回值
async function xr() {
return "你好";
}
- 使用async声明的方法为异步方法,await只能在async函数里面使用
- async声明的方法返回的是Promise对象,而await就是等待promise的返回结果,在继续执行
- await等待的是是一个Promise对象,后面必须是一个Promise对象,但不需要写then(),直接可以得到返回结果
await
- await用于等待一个异步完成,通常返回一个Promise的函数(比如then函数,或者catch函数)
- 当遇await时,函数会暂停执行,等待Promise解决(或拒绝)并返回结果,
function xr() {
return new Promise(function (resolve,reject) {
setTimeout(() {
resolve("你好");
})
})
}
async function by() {
//被await等待的Promise函数,
//相当于调用了then方法,直接有data值
const response = await xr();
//输出的结果为 你好
console.log(response);
}
//上面的by()函数相当于下面的
xr().then(function(data) {
console.log(data);
})