비동기 / 대기

Barbara Streisand
Barbara Streisand원래의
2024-10-10 06:24:30886검색

async / await

비동기 / 대기

async/await는 promise에 비해 비동기 코드를 작성하는 새로운 방법입니다. async/await의 주요 장점은 가독성 향상과 프라미스 체이닝 방지입니다. Promise는 길어지고 읽기 어려울 수 있으며 디버그하기 어려울 수 있는 깊게 중첩된 콜백을 포함할 수 있습니다.

이전의 가져오기를 회상해 보세요.

fetch('https://jsonplaceholder.typicode.com/todos/1')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error))
  .finally(() => console.log('All done'));

async/await를 사용하면 코드를 다음과 같이 리팩토링할 수 있습니다.

async function fetchData() {
  try {
    const response = await fetch('https://jsonplaceholder.typicode.com/todos/1');
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error('Error:', error);
  } finally {
    console.log('All done');
  }
}

fetchData();

코드가 몇 줄 더 필요할 수 있지만 이 버전은 일반적인 동기 함수와 유사하기 때문에 읽기가 더 쉽습니다. 또한 .then() 문 내부의 함수가 더 복잡하면 가독성과 디버깅 가능성이 훨씬 더 큰 영향을 받습니다. async/await 예제가 훨씬 더 명확합니다.

예 2: 레스토랑에서 음식 주문

비동기/대기의 구조

비동기/대기 함수에는 비동기와 대기라는 두 가지 필수 부분이 있습니다. async 키워드는 함수 선언 앞에 추가되며, 비동기 작업이 시작될 때 wait가 사용됩니다.

레스토랑에서 음식을 주문하는 예를 들어 설명하겠습니다.

// Simulate the order process with async/await
async function foodOrder() {
  console.log("Ordering food...");
  await new Promise(resolve => setTimeout(resolve, 2000)); // Wait 2 seconds for food to be prepared
  return "Your food is ready!";
}

// Simulate the eating process
function eatFood(order) {
  console.log(order); // This logs "Your food is ready!"
  console.log("Enjoying the meal!");
}

// Simulate continuing the conversation
function continueConversation() {
  console.log("While waiting, you continue chatting with friends...");
}

async function orderFood() {
  console.log("You've arrived at the restaurant.");
  const order = await foodOrder(); // Place the order and wait for it to be ready
  continueConversation(); // Chat while waiting
  eatFood(order); // Eat the food once it arrives
}

orderFood();

출력은 다음과 같습니다

You've arrived at the restaurant.
Ordering food...
While waiting, you continue chatting with friends...
Your food is ready!
Enjoying the meal!

위 내용은 비동기 / 대기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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