JS 20 funcrion2 callback
Callback
demo23.html
콜백?
어떠한 함수가 수신하는 인자값이 함수인 경우
- 예시
내장메서드 sort가
사용자정의함수 sortfunc를 인자로 받음
처리의 위임
예제에서 sortfunc = 콜백(callback) 함수
이 콜백함수를 인자값으로 받아서
built in method인 sort가 처리되는 방식을 바꿈
function sortNumber(a, b) {}
var numbers = [20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
console.log(numbers.sort());
// : [1, 10, 2, 20, 3, 4, 5, 6, 7, 8, 9]
// 숫자가 크기가 아니라 문자로 비교한 듯?
// '.'앞은 '객체'
// 여기서는 numbers라고하는 배열형태의 객체
// sort라는 함수가 시스템상 정의되어 있는데
// 객체에 속해있는 함수(sort)이기 때문에 method 임
//이렇게 시스템에 미리 정의 되어있는 것을
//내장객체, 내장메소드 라고 부름
//built in object, built in method
//우리가 그때 그때 정의하는 객체, 메서드는
//사용자 정의 객체, 사용자 정의 메서드 라고 부름
const numbers = [20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
const sortfunc = function (a, b) {
// console.log(a, b);
if (a > b) {
return 1;
} else if (a < b) {
return -1;
} else {
return 0;
}
};
// sortfunc = 인자1 인자2 를 비교하는 값을 전달
// return값이 양수인지 음수인지 0인지 비교해서 정렬
// 어려움ㄷ
console.log(numbers.sort(sortfunc));
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]
// sortfunc로 sort가 동작하는 방법을 정의
const numbers = [20, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1];
const sortfunc = function (a, b) {
return a - b;
};
// if문으로 설정했던 기준을 최소화
// 역순 : return b - a;
console.log(numbers.sort(sortfunc));
// : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20]
이것이 콜백의 정의
이런 기능이 가능한 이유는
JS의 function이 ‘값’이기때문
비동기 처리 (참고만)
웹서비스에 10000명의 구독자가있고
웹에 글을 작성하면 구독자에게 메일을 보냄
한명에 1초만걸려도 10000초 = 2시간이상
-
동기적처리(순서대로실행)
글작성 - 메일발송 - 작성완료 = 3시간 -
비동기적처리
글작성 - 메일발송예약 - 작성완료 = 짧은시간 내부적으로 사용자에게는 보이지않는 프로그램이
메일발송예약이 있을 때 발송시키는 작업을
3시간동안 백그라운드에서 혼자서 진행-
비동기처리의 예시
JS의 Ajax-
asynchronous 비동기
javascript
and
XML웹페이지가 계속 로드 될 필요 없이
서버에서 필요한 정보만 받아와서 사용,출력하는 기능?
-
-
Jquery library를 이용하면 조금 쉽게 구현할 수 있음
{ "title": "JavaScript", "author": "egoing" }
//json이라는 형태의 데이터
//json은 JS에 객체를 만드는 방법
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<!--jquery를 includ-->
</head>
<body>
<script type="text/javascript">
$.get(
"./datasource.json.js",
function (result) {
console.log(result);
},
"json"
);
<!-- Ajax기능흘 하고록하는 객체$.메서드get
인자1 : url, 인자2 : 함수 result 호출-->
</script>
</body>
</html>
ect
매개변수 확인
sort 동작방식 참고