콜백 함수
다른 함수의 인자로써 넘겨진 후 특정 이벤트에 의해 호출되는 함수입니다.
(첫번째가 다 끝난 후 2번째가 실행되도록 하는 함수 로딩 소스가 다 끝나고 메인 소스가 나오도록 하는 그런 기능) : 첫번째 함수가 실행 -> 두번째 함수가 실행
기본 형태
콜백 함수는 그 자체로 특별한 선언이나 문법적 특징을 가지고 있진 않지만, 특정 이벤트가 발생할 때 호출할 수 있어 다양하게 많이 사용됩니다.
기본 형태
function func();
fuction callback(str){
str();
}
callback(func);
{
function func(){
document.write("함수가 실행되었습니다.1");
}
function callback(str){ //인자값을 마치 함수인거처럼 실행문으로 사용
document.write("함수가 실행되었습니다.2");
str();
}
callback(func);
}
결과보기
콜백 함수 : 반복문
콜백 함수는 함수 안에 반목문을 사용할 수 있습니다.
{
function func(index){
document.write("함수가 실행되었습니다." + index);
}
function callback(num){
for(let i=1; i<=10; i++){
num(i);
}
}
callback(func);
}
결과보기
콜백 함수 : 동기/비동기
HTML은 작성한 순서대로 진행되기 때문에 실행 순서를 바꾸기가 쉽지 않습니다. 콜백 함수는 비동기적 실행을 가능하게 해서 순서를 바꿀 수 있습니다.
동기적 실행 : 프로그램이 작성된 순서대로 실행
비동기적 실행 : 두개 이상의 함수가 순서대로가 아닌 방식으로 실행
{
//일번적인 함수 방식
function funcA(){
document.write("funcA가 실행되었습니다.")
}
function funcB(){
document.write("funcB가 실행되었습니다.")
}
funcA();
funcB(
//b다음 a실행
function funcA(){ //B가 실행된 다음 A가 실행됨
setTimeout(() => {
console.log("funcA가 실행되었습니다.")
}, 1000);
}
function funcB(){
console.log("funcB가 실행되었습니다.")
}
funcA();
funcB(
//a다음 b실행
function funcA(callback){ //A가 실행된 다음 B가 실행됨
setTimeout(() => {
console.log("funcA가 실행되었습니다.")
callback();
}, 1000);
}
function funcB(){
console.log("funcB가 실행되었습니다.")
}
funcA(function(){
funcB();
});
//a다음 b다음 c가 실행
function funcA(callback){ //A가 실행된 다음 B가 실행됨
setTimeout(() => {
console.log("funcA가 실행되었습니다.")
callback();
}, 1000);
}
function funcB(callback){
setTimeout(() => {
console.log("funcB가 실행되었습니다.")
callback();
}, 1000);
}
function funcC(callback){
setTimeout(() => {
console.log("funcC가 실행되었습니다.")
callback();
}, 1000);
}
function funcD(){
setTimeout(() => {
console.log("funcD가 실행되었습니다.")
// callback();
}, 1000);
}
funcA(function(){
funcB(function(){
funcC(function(){
funcD();
});
});
});
}
결과보기
//콘솔로그로 확인(1초씩 지연되서 차례대로 실행됨)
funcA가 실행되었습니다.
funcB가 실행되었습니다.
funcC가 실행되었습니다.
funcD가 실행되었습니다.
'Javascript' 카테고리의 다른 글
reverse( )/sort( )/concat( ) (2) | 2022.09.27 |
---|---|
unshift( )/shift( ) 메서드 (2) | 2022.09.27 |
재귀 함수 (3) | 2022.09.20 |
비구조화 할당 / 객체구조분해 할당 (3) | 2022.09.20 |
펼침연산자 (3) | 2022.09.20 |
댓글