[최상위 await] await를 비동기식으로 사용하지 않음

설정

"type": "module"1. 최상위 await 를 지원하려면 package.json에서 구성해야 합니다 . 예:

 "type": "module",

2. 노드 버전 >= v14.8


사용량 비교

1. 기존의 사용법

  • 일반 대기는 비동기에서만 사용할 수 있습니다.
/**
 * 常规await只能在async中使用
 */

async function fn1() {
    
    
    const p = await Promise.resolve('我是老6')
    console.log(p)
}

fn1()//我是老6

2. 최상위 사용

  • 비동기식으로 await를 사용할 필요가 없습니다.
/**
 * 顶层使用
 */

function fn2() {
    
    
    return Promise.resolve('我不是老6呀!')
}

// 直接使用await
const resFn2 = await fn2()
console.log(resFn2)//我不是老6呀!

참고 사항||오용

  • ↓와 같은 then에서 최상위 await를 사용할 수 없습니다.
/**
 * 错误使用顶层await
 */
const ps1 = Promise.resolve('我是真的老6!')
const ps2 = Promise.resolve('我是真的老6!')

//在ps1的then里使用顶层await
ps1.then(res => {
    
    
    console.log(await ps2())//报错
})

오류 그래프
여기에 이미지 설명 삽입

올바르게 사용

/**
 * 正确使用顶层await
 */
const ps1 = Promise.resolve('我是真的老6!')
const ps2 = Promise.resolve('我是真的老6!')
 
console.log(await ps1)
console.log(await ps2)

2023/5/12 22:55 맑음

Supongo que te gusta

Origin blog.csdn.net/qq_43614372/article/details/130651516
Recomendado
Clasificación