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 중국어 웹사이트의 기타 관련 기사를 참조하세요!