Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- vue 추가
- 타임리프 참조 오류
- CI/CD
- 배포 자동화
- document 함수
- 자바 swing 프로젝트
- Quartz dependency
- Jenkins
- 클래스 참조
- 테스팅
- dbeaver 백업/복구
- reset
- vue 실행
- 깃허브 토큰 생성
- submit 기본동작
- ..gitignore
- 배열 call by value
- 깃허브 토큰 발급
- git 폴더 모으기
- firstChild
- 되돌리기
- Quartz 라이브러리
- 소프트웨어
- Node Property
- 환경변수
- 채팅 프로젝트
- deploy.sh
- .ppk
- AWS 생성
- EL1021E
Archives
- Today
- Total
TY blog
JavaScript 이미지 규격 체크 onload 함수 본문
/* imageCheck 함수 */
function imageCheck(){
var _URL = window.URL || window.webkitURL;
var img = new Image();
img.src = _URL.createObjectURL("imgURL");
/* 이미지 가로, 세로 구하는 로직 */
img.onload = function() {
var width = img.width;
var height = img.height;
if(width > 1000 || height > 1000){
alert("이미지는 가로, 세로 1000px * 1000px 이하만 업로드 할 수 있습니다.");
return false;
}
}
console.log("함수실행");
}
위의 함수는 이미지를 읽어들여 가로, 세로 1000 이하일때 false 를 주는 함수이다.
하지만 img.onload 함수는 이미지 로드가 완료되기 전까지 비동기적으로 동작해 이미지 체크 전에
console.log("함수실행"); 부분이 먼저 실행될 수 있다.
/* imageCheck 함수 동기적 개선 */
function imageCheck(){
var _URL = window.URL || window.webkitURL;
var img = new Image();
img.src = _URL.createObjectURL("imgURL");
loadImage(img.src)
.then(function(img) {
var width = img.width;
var height = img.height;
if(width > 1000 || height > 1000){
alert("이미지는 가로, 세로 1000px * 1000px 이하만 업로드 할 수 있습니다.");
return false;
} else {
/* 이미지가 가로 * 세로 1000px * 1000px 이하일때 수행로직 */
}
}
)
.catch(function(error) {
console.log(error.message);
});
}
console.log("함수실행");
}
function loadImage(url) {
return new Promise(function(resolve, reject) {
var img = new Image();
img.onload = function() {
resolve(img);
};
img.onerror = function() {
reject(new Error("이미지 로드 실패"));
};
img.src = url;
// 이미지 미리 로드
});
}
Promise 객체를 생성한 후에는 then() 메서드를 사용하여 비동기 작업이 성공적으로 완료된 후 수행할 작업을 등록할 수 있습니다.
위 함수로 변경하여 이미지 로드를 동기적 방식으로 진행할 수 있다.
'프로그래밍 언어 > JavaScript' 카테고리의 다른 글
HTML 요소 선택 JS 함수 정리 (0) | 2023.12.31 |
---|---|
Form submit 기본흐름 제어 (0) | 2023.11.11 |
onfocus, onblur 이벤트 (0) | 2023.09.22 |
js 정규식 문자열 변환 (1) | 2023.01.28 |
XMLHttpRequest / jQuery 데이터 요청, 응답 (0) | 2023.01.10 |
Comments