> 웹 프론트엔드 > JS 튜토리얼 > JavaScript에서 Promise 탐색

JavaScript에서 Promise 탐색

Barbara Streisand
풀어 주다: 2025-01-19 14:34:11
원래의
209명이 탐색했습니다.

Exploring Promises in JavaScript

비동기 JavaScript를 익히려면 Promise를 이해해야 하는 경우가 많습니다. 처음에는 어려운 일이지만 일단 약속을 이해하면 귀중한 도구가 됩니다. 이 가이드에서는 Promise가 무엇인지, 그 기능과 의미가 무엇인지 명확히 설명합니다.

JavaScript Promise 이해

Promise는 비동기 작업의 최종 성공 또는 실패를 나타내는 JavaScript 개체입니다. 기본적으로 API 데이터 검색이나 파일 읽기 등 즉각적인 결과를 반환하지 않는 작업을 관리합니다.

약속은 세 가지 상태로 존재합니다.

  1. 보류: 작업이 진행 중입니다.
  2. 이행됨: 작업이 성공했습니다.
  3. 거부됨: 작업이 실패했습니다.

일단 이행되거나 거부되면 Promise의 상태가 고정됩니다.

약속의 필요성

JavaScript의 단일 스레드 특성은 한 번에 하나의 작업을 처리한다는 의미입니다. 비동기 작업은 기본 스레드 차단을 방지합니다. Promise 이전에는 콜백이 표준이었지만 중첩된 콜백으로 인해 코드가 복잡하고 유지 관리가 어려워졌습니다. Promise는 비동기 작업 관리를 위한 더 깔끔하고 읽기 쉬운 대안을 제공합니다.

약속해부

프라미스 생성은 Promise 생성자를 사용하여 resolvereject 인수가 있는 실행기 함수를 허용합니다.

const myPromise = new Promise((resolve, reject) => {
  const success = true;

  if (success) {
    resolve("Operation successful!");
  } else {
    reject("Operation failed.");
  }
});
로그인 후 복사
로그인 후 복사
  • resolve : 작업이 성공적으로 완료되면 호출됩니다.
  • reject : 연산 실패시 호출됩니다.

Promise 활용

.then(), .catch().finally()은 Promise 결과를 처리합니다.

myPromise
  .then(result => {
    console.log(result); // "Operation successful!"
  })
  .catch(error => {
    console.log(error); // "Operation failed."
  })
  .finally(() => {
    console.log("Operation complete.");
  });
로그인 후 복사
  • .then(): 이행 시 실행됩니다.
  • .catch(): 거부 시 실행됩니다.
  • .finally(): 결과에 관계없이 실행됩니다.

실제 애플리케이션: 데이터 가져오기

Promise는 API와 함께 자주 사용됩니다. 다음은 fetch API 예시입니다:

fetch("https://api.example.com/data")
  .then(response => {
    if (!response.ok) {
      throw new Error("Network response failed");
    }
    return response.json();
  })
  .then(data => {
    console.log(data);
  })
  .catch(error => {
    console.error("Fetch error: ", error);
  });
로그인 후 복사

이 예는 다음을 보여줍니다.

  • fetch Promise를 반환합니다.
  • 첫 번째 .then() 응답을 분석합니다.
  • 두 번째 .then()파싱된 데이터를 처리합니다.
  • .catch() 오류 처리

고급 기술: Promise Chaining

Promise Chaining은 주요 장점입니다. 각 .then()은 새로운 Promise를 반환하여 순차적 비동기 작업 실행을 가능하게 합니다.

getUser()
  .then(user => getUserPosts(user.id))
  .then(posts => displayPosts(posts))
  .catch(error => console.error(error));
로그인 후 복사

이렇게 하면 코드 명확성이 유지되고 콜백이 깊게 중첩되는 것을 방지할 수 있습니다.

비동기/대기: 단순화된 구문

ES2017의 async/await은 Promise 처리를 단순화하여 비동기 코드를 동기식으로 보이게 만듭니다.

const myPromise = new Promise((resolve, reject) => {
  const success = true;

  if (success) {
    resolve("Operation successful!");
  } else {
    reject("Operation failed.");
  }
});
로그인 후 복사
로그인 후 복사

async/await 약속을 기반으로 합니다. 효과적인 async/await 사용

을 위해서는 약속을 이해하는 것이 필수적입니다.

Promise의 주요 장점

  1. 가독성: 비동기 코드의 가독성 및 유지 관리성이 향상되었습니다.
  2. 오류 처리: .catch()을 통한 중앙 집중식 오류 처리.
  3. 체인: 순차적 비동기 작업 실행을 활성화합니다.

일반적인 실수

  1. Promise 반환 누락: 체이닝 중에는 항상 Promise를 반환합니다.
  2. 처리되지 않은 거부: 오류 처리를 위해 .catch() 또는 try-catch를 사용하세요.
  3. 콜백과 약속 혼합: 접근 방식의 일관성을 유지하세요.

결론

프라미스는 비동기 작업 처리를 단순화하기 위한 강력한 JavaScript 기능입니다. 구조와 사용법을 이해하면 더 깔끔하고 유지 관리하기 쉬운 코드가 만들어집니다. 향후 Promise 재교육을 위해 이 가이드를 다시 참조하세요! 아래 댓글로 질문과 예시를 공유해 주세요!

위 내용은 JavaScript에서 Promise 탐색의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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