> 웹 프론트엔드 > JS 튜토리얼 > 'Promise' 생성자 내에서 'async/await'를 사용하는 것이 안티 패턴인가요?

'Promise' 생성자 내에서 'async/await'를 사용하는 것이 안티 패턴인가요?

DDD
풀어 주다: 2024-12-18 22:00:16
원래의
528명이 탐색했습니다.

Is Using `async/await` Inside a `Promise` Constructor an Anti-Pattern?

새 Promise() 생성자 내에서 async/await를 사용하는 것이 안티패턴인가요?

비동기 프로그래밍은 어려울 수 있습니다. 특히 중첩된 콜백을 처리할 때 그렇습니다. 이를 단순화하기 위해 ES6에서는 async/await 구문을 도입했습니다. 그러나 new Promise()의 생성자 함수 내에서 async/await를 사용할 때는 주의가 필요합니다.

제공된 예에서:

return new Promise(async (resolve, reject) => {
  eachLimit((await getAsyncArray), 500, (item, callback) => {
    // do other things that use native promises.
  }, (error) => {
    if (error) return reject(error);
    // resolve here passing the next value.
  });
});
로그인 후 복사

await를 사용하여 getAsyncArray를 호출하고 있습니다. , Promise를 반환하지만 Promise 생성자의 실행 함수 내에 있습니다. 이를 "Promise 생성자 안티 패턴"이라고 합니다.

이 패턴의 주요 위험은 오류가 제대로 처리되지 않을 수 있다는 것입니다. 비동기성은 예측할 수 없는 동작을 생성할 수 있으며 async/await를 활용하면 잠재적인 문제를 파악하기가 더 어려워집니다.

예를 들어 getAsyncArray 함수의 오타로 인해 TypeError가 발생하지만 EachLimit 콜백에서 이를 포착하지 못할 수도 있습니다. 오류 처리. 그러나 async/await를 제거하면 Promise 생성자 외부에서 오류가 발생하고 적절하게 처리됩니다.

결론적으로 Promise()의 생성자 함수 내에서 async/await를 사용하는 것이 편리해 보일 수 있지만, 오류 처리 문제가 발생할 가능성이 있기 때문에 이는 안티 패턴입니다. 대신 적절한 오류 전파 및 코드 유지 관리 가능성을 보장하려면 Promise 생성자 외부에서 async/await를 사용하는 것이 좋습니다.

위 내용은 'Promise' 생성자 내에서 'async/await'를 사용하는 것이 안티 패턴인가요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿