当前位置: 代码迷 >> 综合 >> async函数
  详细解决方案

async函数

热度:4   发布时间:2024-02-22 12:28:18.0

1.async 函数返回结果都是 Promise 对象(如果函数内没返回 Promise ,则自动封装一下)

async function fn2() {
    return new Promise(() => {})
}

async function fn1() {
    return 100
}


2.- await 后面跟 Promise 对象:会阻断后续代码,等待状态变为 resolved ,才获取结果并继续执行
- await 后续跟非 Promise 对象:会直接返回


(async function () {
    const p1 = new Promise(() => {})
    await p1
    console.log('p1') // 不会执行
})()

(async function () {
    const p2 = Promise.resolve(100)
    const res = await p2
    console.log(res) // 100
})()

(async function () {
    const res = await 100
    console.log(res) // 100
})()

(async function () {
    const p3 = Promise.reject('some err')
    const res = await p3
    console.log(res) // 不会执行
})()
 


(async function () {
    const p3 = Promise.reject('some err')
    const res = await p3
    console.log(res) // 不会执行
})()
```

3.- try...catch 捕获 rejected 状态


(async function () {
    const p4 = Promise.reject('some err')
    try {
        const res = await p4
        console.log(res)
    } catch (ex) {
        console.error(ex)
    }
})()

 

总结来看:

- async 封装 Promise
- await 处理 Promise 成功
- try...catch 处理 Promise 失败

  相关解决方案