>웹 프론트엔드 >JS 튜토리얼 >Promise Chaining과 Aync/await의 차이점은 무엇입니까?

Promise Chaining과 Aync/await의 차이점은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-16 15:47:02354검색

Qual a diferença de Encadeamento de Promises e Aync/await

오늘 나는 비동기 작업을 처리하는 두 가지 방법의 차이점에 대한 나 자신의 무지에 직면했습니다. 그래서 나는 이 게시물을 쓰기 위해 읽고 연구하기로 결정했습니다. 그리고 다른 개발자가 이 차이점을 더 잘 이해할 수 있도록 도와줄 수도 있습니다.

당시 저는 then()이 해결된 데이터를 가져오는 반면, 해결 및 거부는 성공 또는 오류로 끝나는 데 사용된다는 점에서 둘 다 동일한 작업을 수행한다는 것을 어느 정도 설명하는 방법을 알고 있었습니다. Async/await는 다음 단계로 넘어가기 전에 결과를 기다리고 있었습니다. 완전히 틀린 것은 아니지만 훨씬 더 나은 방법으로 설명할 수 있습니다.

약속하다

Promise는 이름에서 알 수 있듯이 세 가지 주요 상태를 거치는 데이터 반환 "Promise"입니다.

  1. Pending: Promise가 아직 해결되거나 거부되지 않은 초기 상태
  2. 완료: 작업이 성공적으로 완료되었습니다.
  3. 거부됨: 작업이 실패하여 오류가 발견되었습니다.
const minhaPromise = new Promise((resolve, reject) => {
  let sucesso = true; // Apenas um exemplo condicional

  if (sucesso) {
    resolve("Operação concluída com sucesso!");
  } else {
    reject("Ocorreu um erro na operação.");
  }
});

약속 연결

이것은 async/await 이전에 Promise를 처리하는 가장 일반적인 방법이었습니다. then(), catch() 및 finally() 메소드를 사용합니다.

  • then(): 성공적으로 해결된 데이터를 수신하고 조작하는 데 사용됩니다.
  • catch(): Promise가 거부되었을 때 오류를 처리하는 데 사용됩니다.
  • finally(): 결과에 관계없이 코드를 실행하는 데 사용됩니다.
minhaPromise
  .then((mensagem) => {
    console.log(mensagem); // "Operação concluída com sucesso!"
  })
  .catch((erro) => {
    console.error(erro); // Se der erro, isso será executado.
  })
  .finally(() => {
    console.log("Finalizando a execução da Promise"); // Sempre será executado.
  });

비동기/대기

async라고 표시된 함수는 자동으로 Promise를 반환하고 await는 Promise가 해결될 때까지 실행을 "일시 중지"하는 데 사용됩니다.

async function buscarDados() {
  try {
    const response = await fetch("https://jsonplaceholder.typicode.com/todos/1");
    const data = await response.json();
    console.log("Dados recebidos:", data);
  } catch (error) {
    console.error("Erro ao buscar dados:", error);
  }
}

buscarDados();

차이점

Promise 연결로 인해 코드가 매우 중첩될 수 있으며, 특히 여러 then()을 연속해서 사용할 경우 읽기가 더 어려워집니다.

Async/await를 사용하면 동기 코드와 더 유사한 방식으로 비동기 코드를 작성할 수 있으므로 논리를 더 쉽게 읽고 이해할 수 있습니다. 특히 여러 비동기 작업을 처리해야 하는 경우 코드가 더욱 깔끔해집니다.

또한 async/await와 함께 try/catch를 사용하여 오류를 처리하는 방법은 Promise에서 catch를 사용하는 것보다 더 직관적입니다.

위 내용은 Promise Chaining과 Aync/await의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.