> 웹 프론트엔드 > JS 튜토리얼 > 약속을 취소할 수 있나요? JavaScript의 취소 메커니즘에 대한 심층 분석

약속을 취소할 수 있나요? JavaScript의 취소 메커니즘에 대한 심층 분석

DDD
풀어 주다: 2024-11-02 22:47:03
원래의
662명이 탐색했습니다.

 Can Promises Be Cancelled? A Deep Dive into Cancellation Mechanisms in JavaScript

Promise - Promise

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

원천:php.cn
이전 기사:마우스 커서 아래 캔버스 픽셀의 RGB 색상을 얻는 방법은 무엇입니까? 다음 기사:v3에서 Google Maps API OVER_QUERY_LIMIT 오류를 방지하는 방법은 무엇입니까?
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
최신 이슈
관련 주제
더>
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿