ES6 Promise 자체는 취소를 지원하지 않습니다. 그러나 ECMAScript 표준에는 Promise에 취소를 추가하는 작업이 진행 중입니다.
Promise 취소 제안은 다가오는 JavaScript ES2021 버전에 포함될 WHATWG 사양에 작성되었습니다. 이 제안에서는 약속을 취소하는 데 사용할 수 있는 새로운 AbortController 인터페이스를 소개합니다.
<br>const abortController = new AbortController();<br>const promise = fetch('https://example.com', {<br> 신호: abortController.signal<br>});</p> <p>abortController.abort();<br></ pre><br><p>최신 JavaScript에서는 AbortController를 사용하여 요청 가져오기나 기타 비동기 작업과 같은 Promise 기반 작업을 취소할 수 있습니다.</p></p> <p><p>그러나, AbortController를 사용할 수 없는 경우 비동기 양식 제출이나 네트워크 요청과 같이 사용자가 시작한 작업에 대해 자체 취소 메커니즘을 구현할 수 있습니다.</p><br><p><strong>JavaScript에서 사용자 정의 취소 메커니즘 만들기</strong>: 다음을 통해 간단한 취소 메커니즘을 구현할 수 있습니다.</p><br><ul><br><li>취소할 수 있는 CancellationToken을 만듭니다. 작업.</li><br><li>취소하려는 비동기 작업에 CancellationToken을 전달합니다.</li><br><li>사용자가 취소를 시작할 때 CancellationToken을 취소합니다.< /li><br></ul><br><p>CancellationToken은 Promise를 거부하는 cancel() 메서드를 사용하여 Promise로 구현될 수 있습니다. 예는 다음과 같습니다.</p><br><pre class="lang-js Prettyprint-override"><br>const cancelToken = new Promise((resolve, Reject) => {<br> return { </p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">cancel: () => reject(new Error('Operation has been cancelled.'))
}
});
그런 다음 취소하려는 비동기 작업에 취소 토큰을 다음과 같이 전달할 수 있습니다.< ;/p>
<br>const asyncTask = (cancellationToken) => {<br> // 여기에 비동기 작업을 구현합니다<br> return fetch('https://example.com', {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">cancel: () => reject(new Error('Operation has been cancelled.'))
});
}
그리고 마지막으로 다음과 같이 cancelToken에서 cancel() 메서드를 호출하여 비동기 작업을 취소할 수 있습니다. :
<br>cancellationToken.cancel();<br>
타사 라이브러리 사용: 타사 라이브러리를 사용하여 취소를 구현하려는 경우 bluebird 또는 rxjs와 같은 라이브러리를 사용할 수 있습니다. 다음은 bluebird를 사용한 예입니다.
<br>const Promise = require('bluebird');<br>const cancelToken = new Promise .CancellationToken();</p> <p>const asyncTask = () => {<br> return fetch('https://example.com', {</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">signal: cancellationToken.signal
});
}
cancellationToken.cancel();
< ;/pre>
이것은 JavaScript에서 취소를 구현하는 몇 가지 방법일 뿐입니다. 최선의 접근 방식은 귀하의 구체적인 요구 사항에 따라 달라집니다.
위 내용은 약속을 취소할 수 있나요? JavaScript의 취소 메커니즘에 대한 심층 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!