이 글에서는 setTimeout을 변환한 후 콜백을 실행하는 함수인 setTimeout을 변환하는 방법을 살펴보겠습니다. 비동기 처리에 사용할 수 있는 약속으로 지정된 지연
최신 JavaScript는 비동기 작업을 나타내는 편리한 방법을 제공하는 기본 약속을 지원합니다. setTimeout을 Promise로 변환하려면 이를 Promise 생성자로 래핑하고 해결 함수를 콜백으로 전달할 수 있습니다.
function later(delay) { return new Promise((resolve) => { setTimeout(resolve, delay); }); }
이 함수는 지정된 지연 후에 해결되는 Promise를 반환합니다.
자신만의 Promise 구현을 만들고 싶다면 Promise 프로토타입을 정의하고 다음과 같이 사용할 수 있습니다. 다음은 다음과 같습니다.
function setTimeoutReturnPromise() { function promise() { } promise.prototype.then = function() { console.log('timed out'); }; setTimeout(() => { return this; // Return the promise object }, 2000); return new promise(); }
취소 가능한 약속을 생성하려면 취소 메서드를 제공하는 사용자 정의 개체에 setTimeout을 래핑할 수 있습니다.
const later = (delay, value) => { let timer = 0; let reject = null; const promise = new Promise((resolve, _reject) => { reject = _reject; timer = setTimeout(resolve, delay, value); }); return { get promise() { return promise; }, cancel() { if (timer) { clearTimeout(timer); timer = 0; reject(); reject = null; } } }; };
이 개체 작업을 종료하는 데 사용할 수 있는 Promise 및 취소 메서드를 반환합니다.
위 내용은 JavaScript에서 `setTimeout`을 약속으로 어떻게 바꿀 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!