Async/Await를 사용하여 JavaScript에서 콜백 실행을 일시 중지하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-29 14:16:02
원래의
492명이 탐색했습니다.

How to Use Async/Await to Pause Execution for Callbacks in JavaScript?

Async/Await를 사용하여 콜백 실행 일시 중지

콜백을 처리할 때 콜백이 발생할 때까지 함수 실행을 일시 중지하는 것이 바람직할 수 있습니다. 값을 반환했습니다. 동기 프로그래밍에서는 Join()과 같은 차단 메커니즘을 사용하여 이를 달성할 수 있습니다. 그러나 비동기 프로그래밍에서는 이는 바람직하지 않은 경우가 많습니다.

정확히 한 번만 호출되도록 보장하는 콜백 함수가 있고 async/await를 사용하도록 다음 함수를 수정한다고 가정해 보겠습니다.

test() {
  api.on( 'someEvent', function( response ) {
    return response;
  });
}
로그인 후 복사

목표는 다음과 같이 콜백 실행을 기다리는 비동기 함수로 변환하는 것입니다.

async test() {
  return await api.on( 'someEvent' );
}
로그인 후 복사

Async/await만으로는 이를 달성할 수 없습니다. API에서 Promise를 반환해야 하기 때문입니다. .에(). 이 문제를 해결하기 위해 콜백을 Promise 반환 함수로 래핑할 수 있습니다.

function apiOn(event) {
  return new Promise(resolve => {
    api.on(event, response => resolve(response));
  });
}
로그인 후 복사

이제 test()를 비동기 함수로 다시 작성할 수 있습니다.

async function test() {
  return await apiOn( 'someEvent' ); // await is optional here (returns a Promise)
}
로그인 후 복사

async에 유의하세요. 함수는 Promise 자체도 반환합니다. test()에서 실제 결과를 얻으려면 외부 비동기 함수에서 기다려야 합니다.

async function whatever() {
  const response = await test();
  // use response here
}
로그인 후 복사

Promise-wrapping 기능을 활용하면 async/await를 사용하여 실행을 효과적으로 일시 중지할 수 있습니다. 콜백이 값을 반환할 때까지 test().

위 내용은 Async/Await를 사용하여 JavaScript에서 콜백 실행을 일시 중지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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