async和await
时间: 2023-09-01 09:10:58 浏览: 100
[微信小程序] 终于可以愉快的使用 async/await 啦
async和await是ES7中新增的关键字,用于简化Promise的使用和处理异步操作。
1. async函数
async函数是一种特殊的函数,它返回一个Promise对象,并且内部使用了异步操作。在函数内部可以使用await关键字来等待Promise对象的状态变化。
示例代码:
```
async function foo() {
console.log('start');
await new Promise(resolve => setTimeout(resolve, 1000));
console.log('end');
}
foo();
```
输出结果:
```
start
(等待1秒)
end
```
2. await表达式
await表达式用于等待一个Promise对象的状态变化,如果Promise对象变为resolved状态,则返回Promise对象的值;如果Promise对象变为rejected状态,则抛出异常。
示例代码:
```
async function foo() {
const result = await new Promise(resolve => setTimeout(() => resolve('hello'), 1000));
console.log(result);
}
foo();
```
输出结果:
```
(等待1秒)
hello
```
3. async和await的优点
async和await可以让异步代码看起来像同步代码,使得代码更加易于理解和维护。
同时,async和await也可以避免回调地狱和Promise链式调用的问题,使得异步代码更加清晰和简洁。
示例代码:
```
// Promise链式调用
foo().then(result1 => {
return bar(result1);
}).then(result2 => {
return baz(result2);
}).then(result3 => {
console.log(result3);
});
// async和await
async function foo() {
const result1 = await bar();
const result2 = await baz(result1);
return result2;
}
console.log(await foo());
```
阅读全文