promise async+await实现原理及案例分析
时间: 2023-09-01 10:05:06 浏览: 190
Promise、async和await是JavaScript中用于处理异步操作的关键字。它们的实现原理如下:
1. Promise:Promise是一种表示异步操作的对象,它包含三种状态(pending、fulfilled、rejected)。当一个异步操作完成时,Promise可从pending状态转变为fulfilled状态,表示操作成功;或者从pending状态转变为rejected状态,表示操作失败。Promise提供了then方法来处理操作的结果,并可以进行链式调用。
2. async/await:async函数是Generator函数的一种语法糖,用来简化异步操作的处理。通过在函数前添加async关键字,函数返回值将被自动封装成Promise对象。await关键字只能在async函数中使用,用于暂停async函数的执行,等待Promise对象的状态改变后再继续执行。当await后面的异步操作完成时,它会返回Promise对象的结果。
下面以一个获取用户信息的案例来分析Promise、async和await的用法:
使用Promise实现:
```
function getUserInfo() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const user = { name: 'John', age: 25 };
resolve(user);
}, 1000);
});
}
getUserInfo()
.then(user => {
console.log(user);
})
.catch(error => {
console.error(error);
});
```
使用async/await实现:
```
function getUserInfo() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const user = { name: 'John', age: 25 };
resolve(user);
}, 1000);
});
}
async function displayUserInfo() {
try {
const user = await getUserInfo();
console.log(user);
} catch (error) {
console.error(error);
}
}
displayUserInfo();
```
以上两种方式都可以获取用户信息,并在操作完成后打印到控制台。使用async/await可以使代码看起来更加简洁和易读。通过在async函数内部使用await关键字,可以将异步操作的代码写成类似同步代码的形式,提高了代码的可读性和可维护性。
阅读全文