>  기사  >  웹 프론트엔드  >  비동기 함수의 반환 값은 무엇이며 약속과 어떤 관련이 있나요?

비동기 함수의 반환 값은 무엇이며 약속과 어떤 관련이 있나요?

DDD
DDD원래의
2024-10-18 10:35:29524검색

What Are the Return Values of Async Functions and How Do They Relate to Promises?

비동기 함수: 반환 값과 약속 이해

비동기 함수를 사용하면 동기식으로 코드를 작성할 수 있지만 본질적으로 약속을 반환합니다. 이는 코드의 반환 값과 관련하여 혼란을 초래할 수 있습니다.

Promise: 빠른 개요

Promise는 비동기 작업의 최종 완료 또는 실패를 나타내는 개체입니다. . 두 가지 핵심 메소드를 제공합니다:

  • then(resolve, Reject): 작업이 성공(해결)하거나 오류를 감지(거부)할 때 작업 결과를 처리합니다.
  • catch( 거부): 오류를 비동기적으로 처리합니다.

비동기 함수 및 약속

비동기 함수는 명시적으로 wait 키워드를 사용하지 않더라도 항상 약속을 반환합니다. . 이 약속은 비동기 작업의 결과를 나타냅니다. 함수에서 오류가 발생하면 Promise는 해당 오류와 함께 거부됩니다.

사용법:

콜백 함수를 사용한 Promise:

<code class="javascript">const myAsyncFunction = () => {
  return new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Asynchronous value');
    }, 1000);
  });
};

myAsyncFunction()
  .then(result => {
    console.log(`Callback Result: ${result}`);
  })
  .catch(error => {
    console.log(`Error: ${error}`);
  });</code>

Async/Await를 사용한 약속:

<code class="javascript">async function myAsyncFunction() {
  const result = await new Promise((resolve, reject) => {
    setTimeout(() => {
      resolve('Asynchronous value');
    }, 1000);
  });
  return result;
}

myAsyncFunction()
  .then(result => {
    console.log(`Await Result: ${result}`);
  })
  .catch(error => {
    console.log(`Error: ${error}`);
  });</code>

이 예에서 myAsyncFunction은 1초 지연 후 '비동기 값' 값으로 해결되는 약속을 반환합니다. . then 및 catch 메소드는 각각 해결 또는 거부된 상태를 처리합니다.

Promise 반환

수정 없이 Promise 자체를 반환하려면 다음과 같이 하면 됩니다. 쓰기:

<code class="javascript">const myAsyncFunction = () => {
  return new Promise(...);
};</code>

수정된 값 반환

비동기 함수에서 수정된 값을 반환하려면 then 메서드 내에서 Promise 결과를 처리하고 반환해야 합니다. 수정된 값. 예:

<code class="javascript">async function myAsyncFunction() {
  const result = await new Promise(...);
  return result.toUpperCase();
}</code>

이 함수는 결과의 대문자 버전으로 해결되는 Promise를 반환합니다.

위 내용은 비동기 함수의 반환 값은 무엇이며 약속과 어떤 관련이 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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