El uso básico de async espera

El uso de async espera

自我记录

MDN: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Statements/async_function
MDN: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference /Operadores/espera

1. función asíncrona

El valor de retorno de la función es un objeto de promesa y
el resultado del objeto de promesa está determinado por el valor de retorno de la ejecución de la función asíncrona.

async function main() {
    
    
     // 1.如果返回值 是一个非Promise类型的数据
     // 返回的结果就是 一个成功的 Promise 对象 PromiseState状态 fulfilled
     // 并且return 什么 PromiseResult 结果就是什么
     // return 'abc'

     // 2.如果返回值 是一个Promise类型的数据
     // 返回的结果就是 Promise 结果的状态
     // return new Promise((resolve, reject) => {
    
    
     //     // resolve('成功')
     //     reject('失败')
     // })

     // 3.如果抛出异常
     // 状态就是一个失败的Promise对象 结果就是 抛出的结果
     throw 'err'
 }
 let res =  main()
 console.log(res);

Insertar descripción de la imagen aquí

2.esperar expresión

1. La expresión en el lado derecho de await es generalmente un objeto de promesa, pero también puede tener otros valores
2. Si la expresión es un objeto de promesa, await devuelve el valor de una promesa exitosa
3. Si la expresión tiene otros valores , este valor se utiliza directamente como valor de retorno de await

async function main() {
    
    
    let p = new Promise((resolve, reject) => {
    
    
        resolve('成功')
    })
    // 1.右侧为promise的情况
    let res = await p
    console.log(res); // 打印   成功

    // 2.右侧为其它类型的数据 一般很少见
    let res2 = await 'abc'
    console.log(res2); // 打印  abc   
}
main()

3. Atención

await debe escribirse en la función asíncrona, pero no es necesario esperar en la función asíncrona
. Si la promesa de espera falla, se generará una excepción y deberá capturarse y procesarse mediante try...catch.

async function main() {
    
    
    let p = new Promise((resolve, reject) => {
    
    
        reject('err')
    })
    try {
    
    
        let res3 = await p
        console.log(res3);
    } catch(e) {
    
    
        console.log(e); // 打印 err
    } finally{
    
    
        // 补充知识点 finally 无论成功失败都会执行
        console.log('无论成功失败 我都会执行!');
    }
}
main()

Supongo que te gusta

Origin blog.csdn.net/zhgweb/article/details/131063883
Recomendado
Clasificación