> 웹 프론트엔드 > JS 튜토리얼 > 자동 완성 검색을 위해 JavaScript에서 약속을 어떻게 취소할 수 있나요?

자동 완성 검색을 위해 JavaScript에서 약속을 어떻게 취소할 수 있나요?

Patricia Arquette
풀어 주다: 2024-10-29 18:58:02
원래의
859명이 탐색했습니다.

 How Can I Cancel Promises in JavaScript for Type-Ahead Search?

Promise - Promise

이 시나리오에서 사용자는 자동 검색을 수행하고 있습니다. 각 키 입력은 새로운 백엔드 호출을 트리거합니다. 사용자가 더 빠르게 입력할수록 이전 요청은 관련성이 없어지고 취소되어야 합니다.

ES6의 Promise는 현재 상태대로 기본적으로 취소를 지원하지 않습니다. 그러나 네트워크 요청과 같은 비동기 작업을 취소할 수 있는 크로스 플랫폼 기본 요소인 AbortController를 통해 취소 기능을 도입하려는 작업이 진행 중입니다.

AbortController 사용

현대적인 접근 방식으로 AbortController는 신호를 제공합니다. Promise를 반환하는 함수를 취소하는 데 사용할 수 있는 객체입니다. 구문은 다음과 같습니다.

<code class="javascript">async function somethingIWantToCancel({ signal } = {}) {
  // Use the signal object to manually adapt code for cancellation support
  const onAbort = (e) => {
    // Handle cancellation logic here
  };
  signal.addEventListener('abort', onAbort, { once: true });
  try {
    const response = await fetch('...', { signal });
  } catch (e) {
    if (e.name === 'AbortError') {
      // Deal with cancellation in caller
    } else {
      throw e;
    }
  } finally {
    signal.removeEventListener('abort', onAbort);
  }
}</code>
로그인 후 복사

이 예에서 SomethingIWantToCancel 함수는 AbortController의 인스턴스인 신호 매개변수를 사용합니다. signal.addEventListener 리스너는 작업이 취소될 때 트리거되는 중단 이벤트에 대한 이벤트 핸들러를 등록합니다. finally 블록은 작업이 완료되면 이벤트 리스너가 제거되도록 보장합니다.

대안

AbortController가 옵션이 아닌 경우 또 다른 접근 방식은 Bluebird와 같은 타사 라이브러리를 사용하는 것입니다. 취소 기능을 제공합니다.

또 다른 대안은 취소 토큰을 사용하는 것입니다. 여기에는 요청을 취소하기 위해 호출할 수 있는 메서드에 함수를 전달하는 작업이 포함됩니다.

결론

ES6 Promise에는 기본 취소 지원이 없지만 AbortController 및 기타 대안은 비동기 작업을 취소하는 방법을 제공합니다. 현대 자바스크립트에서. 이전 시나리오의 경우 취소 토큰이나 타사 라이브러리를 사용하면 여전히 솔루션을 제공할 수 있습니다.

위 내용은 자동 완성 검색을 위해 JavaScript에서 약속을 어떻게 취소할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿