[JavaScript] 자바스크립트에서 XMLHttpRequest로 작업상황 확인하기
2022. 8. 2. 16:39ㆍProgram/JavaScript
232_자바스크립트에서 XMLHttpRequest로 작업상황 확인하기
[적용]
- 외부 파일의 불러오기 진행 상황을 확인하고 싶을 때
- 진행 상태바를 표시하고 싶을 때
[문법]
속성 | 의미 | 타입 |
event.loaded | 현재 로딩 진행상태 | 숫자 |
event.total | 전체 데이터 크기 | 숫자 |
[내용]
XMLHttpRequest 객체 인스턴스의 불러오기 진행 상황은 progress 이벤트로 감시하고,
이벤트 핸들러에서 total 속성(전체 데이터 크기)과 loaded 속성(현재 불러오기 진행 상황)을 사용해 확인할 수 있다.
loaded와 total을 조합하면 진행 상황을 % 단위로 계산할 수도 있다.
HTML index.html
<div class="progress">
<div class="progress-bar"></div>
</div>
CSS style.css
.progress {
position: relative;
width: 600px;
height: 20px;
border-radius: 10px;
background: gray;
overflow: hidden;
display: block;
margin: 20px auto;
}
.progress-bar {
position: absolute;
background: orangered;
content: '';
height: 20px;
display: block;
}
JavaScript (부분) main.js
// XHR 생성
const req = new XMLHttpRequest();
// 데이터 종류 설정
req.responseType = 'blob';
req.addEventListener('progress', (event) => {
// 진행 상황 계산(0~1)
const rate = event.loaded / event.total;
// 진행 바 폭 변경
const element = document.querySelector('.progress-bar');
element.style.width = `${rate * 100}%`;
});
// 불러오기 완료 후 이벤트
req.addEventListener('load', (event) => {
// response 가져오기
const data = event.target.response;
// 이미지 데이터 변환
const source = URL.createObjectURL(data);
// 이미지 생성
const image = new Image();
image.src = source;
// 텍스트 출력
document.querySelector('#log').appendChild(image);
});
// 파일 지정
req.open('GET', './sample.jpg');
// 가져오기 시작
req.send();
참조 :
실무에 바로 적용하는 자바스크립트 코드레시피 278
아케다 야스노부, 카노 타케시 지음 / 이춘혁 옮김
'Program > JavaScript' 카테고리의 다른 글
[JavaScript] 자바스크립트 백그라운드에서 스크립트 작업하기 (0) | 2022.08.02 |
---|---|
[JavaScript] 자바스크립트에서 XMLHttpRequest로 작업 취소하기 (0) | 2022.08.02 |
[JavaScript] 자바스크립트에서 XMLHttpRequest로 데이터 읽어오기 (0) | 2022.08.02 |
[JavaScript] 자바스크립트에서 fetch()로 데이터 보내기 (0) | 2022.08.02 |
[JavaScript] 자바스크립트에서 fetch()로 바이너리 데이터 읽어오기 (0) | 2022.08.02 |