자바스크립트 ES6+: Fetch에서 요청을 취소하는 방법
참고: 자바스크립트: Fetch (외부 라이브러리 없이 AJAX 사용)
자바스크립트 Fetch APi에서 보냈던 요청을 취소하는 방법은 다음과 같습니다.
- 새로운
const abortController = new AbortController()를 생성 - fetch 옵션에
signal: abortController.signal추가 - 요청 취소를 원하는 타이밍에
abortController.abort()실행
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
// <pre class="result"></pre>
// <button class="btn-cancel">로딩 취소</button>
const init = () => {
const result = document.querySelector(".result")
const btnCancel = document.querySelector(".btn-cancel")
const abortController = new AbortController() // AbortController 인스턴스 생성
const initFetch = async() => {
try {
result.textContent = "로딩중..."
const response = await fetch("https://reqres.in/api/users?delay=5", {
signal: abortController.signal // 취소 액션이 실행될 경우 요청 취소
})
const text = await response.text()
result.textContent = text
} catch(err) {
console.error(err)
}
}
initFetch()
btnCancel.addEventListener("click", e => {
abortController.abort() // 원하는 타이밍에 취소 요청 보내기
result.textContent = "취소됨"
})
}
init()
[caption id=”attachment_3657” align=”alignnone” width=”400”]
요청 취소를 하지 않았을 때[/caption]
[caption id=”attachment_3658” align=”alignnone” width=”410”]
요청 취소를 했을 때[/caption]
This post is licensed under
CC BY 4.0
by the author.
