setTimeout과 같이 아무것도 반환하지 않는 함수에 대한 Promise를 생성하는 작업입니다. 처음에는 어려울 수 있습니다. 이 개념을 이해하기 위해 수정된 코드 샘플을 참조해 보겠습니다.
<br>function async(콜백){</p> <pre class="brush:php;toolbar:false">setTimeout(function(){ callback(); }, 5000);
}
async(function(){
console.log('async called back');
});
우리의 목표는 setTimeout 콜백이 실행되면 비동기가 반환될 수 있다는 약속을 생성하는 것입니다. Ready.
기본 Promise를 사용하면 다음과 같이 나중에 호출되는 함수를 만들 수 있습니다.
<br>나중에 기능(지연) {</p> <pre class="brush:php;toolbar:false">return new Promise(function(resolve) { setTimeout(resolve, delay); });
}
이 함수는 밀리초 단위의 지연 시간을 가지며 지연 시간이 만료된 후 해결되는 Promise를 반환합니다.
< ;h3>값이 있는 기본 지연
수정하려면 나중에 해상도 값을 전달하도록 허용하려면 setTimeout 콜백이 값을 인수로 수신하는지 확인해야 합니다. setTimeout에 추가 인수 제공을 지원하는 브라우저의 경우 다음 코드를 사용할 수 있습니다.
<br>function later(delay, value) {</p> <pre class="brush:php;toolbar:false">return new Promise(function(resolve) { setTimeout(resolve, delay, value); });
}
이 코드는 값이 콜백에 전달되고 이후에 promise.
타임아웃을 취소하는 기능을 제공하려는 경우 취소 메소드가 있는 객체를 생성하고 약속의 접근자. 취소 메소드가 호출되면 시간 초과를 지우고 약속을 거부합니다.
<br>const later = (delay, value) => {</p> <pre class="brush:php;toolbar:false">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를 거부하는 방법을 제공합니다.
위 내용은 `setTimeout` 함수를 약속으로 바꾸는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!