Promise.try가 이제 기준으로 새로 제공됩니다.

Jeremy Wagner
Jeremy Wagner

게시일: 2025년 1월 17일

웹에서 비동기 작업을 실행하는 것은 쉽지 않을 수 있습니다. 웹에서 실행되는 많은 작업에는 비동기성이 포함됩니다. fetch 호출 또는 기타 비동기 작업이 포함되는지와 관계없이 내장 메서드가 강력한 오류 처리를 제공하는 경우 브라우저에서 작업을 더 쉽게 수행할 수 있습니다. 이는 이미 then, catch, finally 메서드를 사용하는 Promises에 제공되었습니다.

그렇더라도 애플리케이션의 코드베이스를 설계하는 방식은 유연해야 하며 애플리케이션에서 실행하는 모든 작업이 비동기식일 필요는 없습니다. Promise에 전달한 콜백이 동기식인지 여부가 중요하지 않은 경우 더 간단한 방식으로 콜백의 결과를 처리하고 싶을 수 있습니다. Promise.try는 이제 모든 주요 브라우저 엔진에서 사용할 수 있는 메서드로, 개발자가 이를 간소화할 수 있습니다. 즉, 이제 기준점으로 새로 사용할 수 있습니다.

Promise.try란 무엇이며 어떻게 작동하나요?

Promise.tryPromise.resolve를 사용하는 것보다 동기식 콜백 함수의 오류 처리를 더 쉽게 해주는 편의 메서드입니다.

// If the callback is synchronous and it throws
// an exception, the error won't be caught here:
new Promise(resolve => resolve(callback());

// But it will be here:
Promise.try(callback);

그런 다음 then, catch, finally 메서드를 사용하여 Promise의 확인 또는 거부를 처리합니다.

Promise.try(callback)
  .then(result => console.log(result))
  .catch(error => console.log(error))
  .finally(() => console.log("All settled."));

콜백 함수에 인수가 있는 경우 어떻게 해야 하나요? 다음 두 가지 방법 중 하나로 이 문제를 처리할 수 있습니다.

// This creates an extra closure, but works:
Promise.try(() => callback(param1, param2));

// This doesn't create an extra closure, and still works:
Promise.try(callback, param1, param2);

Promise.try를 사용하는 주된 이점은 전달하는 콜백이 동기식인지 비동기식인지와 관계없이 Promise를 일관되게 사용할 수 있다는 것입니다. 즉, 코드에서 널리 사용되는 Promise에 콜백을 전달하는 유틸리티 함수의 경우 Promise.try를 사용하면 전달하는 모든 콜백에 대해 적절한 오류 처리가 보장됩니다. 추가 정보와 기타 잠재적인 문제 또는 사용 사례는 Promise.try의 MDN 문서를 참고하세요.

결론

이제 Promise.try가 '새로 사용 가능' 기준점에 도달했으므로 모든 주요 브라우저 엔진에서 사용할 수 있습니다. 시간이 지남에 따라 Promise.try가 웹 플랫폼의 안정적이고 상호 운용 가능한 부분이 될 것이라는 확신을 가지고 웹 애플리케이션에서 Promise.try를 사용할 수 있을 것으로 기대됩니다.