---
title: 异步
date: 2024-10-03T15:27:54Z
tags: []
---

## Promise

```javascript
new Promise((resolve,reject) => {
    resolve("成功") //成功调用：resolve(值) 触发then()执行
    reject(new Error("失败")) //失败调用：reject(值) 触发 catch()执行
}).then(result => {
    //成功
}).catch(reject => {
    //失败
})
```

### promise.all

```javascript
Promise.all([<promise object1>,<promise object2>,...]).then(result => {
    // 所有promise成功，result：[<promise object1>,<promise object2>,...]
}).catch(reject => {
    // 第一个promise对象，抛出的异常
})

```

### 三种状态

> 一旦状态被兑现/拒绝，就无法再改变了

* 待定（pending）：初始状态,既没有被兑现，有没有被拒绝
* 已兑现（fulfilled）：意味着，操作成功完成
* 已拒绝（rejected）：意味着，操作失败

### 回调函数地狱

回调函数不断嵌套

### promise 链条调用

​`new Promise()`​ -> `.then(回调函数)`​ -> `新的 Promise对象`​

1. 利用then函数返回一个新的Promise对象特性,一直串联下去

## async和await

在async函数内使用await关键字可以让下面的代码等待await执行完成

```javascript
async function <function>(){
    const <a> = await axios({ url: '<url>'})
    const <b> = <a>.data
}
```
