// C47FE8 E4D217
자바스크립트와 웹 프론트엔드 강의와 구글링을 통해서 정리한 글입니다.
Callback function
조건을 등록해 두고 그 조건을 만족한 경우, 나중에 호출되는 함수
강의 만으로는 이해가 잘 되지 않아서 다른 정의도 찾아보았다.
Javascript callback - 생활코딩 Youtube
지금 사용되지는 않지만, 다른 함수의 argument로 사용되어 나중에 호출되는 함수
콜백함수가 뭔지 한국어로 쉽게 설명하는 영상 - 코딩애플 Youtube
함수에 파라미터로 들어가는 함수, 순차적으로 실행하고 싶을때 사용.
setTimeout( function, time )
clearTimeout( timerId )
setInterval( function, time )
clearInterval( intervalId )
나의 정리 : 비동기적으로 동작하는
setTimeout()
,timeInterval()
는 실행시 고유한 timerId를 가지게 되고, 1부터 timerId를 반환한다.clearTimeout()
또는clearInterval()
에 timerId를 인자로 넘겨주면 함수를 종료할 수 있다.따라서 timeId를 변수에 저장해두면 나중에 종료하기 편하다.
https://github.com/mauserne/Stopwatch-for-BOJ/blob/6a1a131ef521608b76650323bf23ef59bb9a190c/background.js#L13
Tag 의 속성에 event handler 코드를 추가
onclick
, onchange
, onkeydown
, ... ) <h1 onclick="console.log('clicked');">..</h1>
<input type="text" onchange="console.log('changed');" onkeydown="console.log('typed');">
"on"+"이벤트"
의 속성에 메소드를 직접 지정document.getElementById("form1").onsubmit = function eventHandler(){
console.log("from property");
return false; // 브라우저의 submit 처리 비활성
}
addEventListener(이벤트, 함수)
메소드를 호출해, eventHandler 등록document.getElementById("form1").addEventListener(
"submit",
function eventHandler(){
console.log("from addEventListener");
return false;
}
);
removeEventListener(이벤트, 함수)
메소드를 호출해, eventHandler 삭제본 강의에서는 옛날 AJAX 방식을 사용하는 듯 하다.
현재는 fetch 문법 또는 axios 라이브러리를 통해 간단하게 구현한다는 듯
서버와 비동기적으로 데이터를 주고 받는 자바스크립트 기술
비동기적으로 동작하기 때문에, 페이지 새로고침 없이 원하는 데이터를 요청해서 나타낼 수 있음
var req = new XMLHttpRequest(); // HTTP 요청을 만들 수 있는 새로운 객체를 생성하는 명령
req.open("GET", "./data.txt"); // http request method와 URL 설정
req.open("GET", "https://www.google.com");
어떤 서버에 요청을 보낼지 설정
req.send();
send
메소드를 통해 HttpRequest를 전송함
req.response
에 저장됨send
메소드 호출 후, 바로 코드에서 접근하면 데이터가 비어 있음클라이언트가 웹 서버에게 사용자 요청의 목적/종류를 알리는 수단이다.
HTTP 요청 메소드 정리 - zorba91.tistory.com
HTTP Request 메소드의 종류는 위와 같다.
근데 GET이랑 POST만 쓰이는 것 같다.
GET과 POST 용도 - 생활코딩 Youtube
readyState | 의미 |
---|---|
0 | open 메소드 호출 전 |
1 | open 메소드 호출 후, send 메소드 호출 전 |
2 | 보낸 요청에 대해 응답 헤더가 수신된 후 |
3 | 응답의 바디 부분이 수신중일 때 |
4 | 모든 응답이 수신되었을 때 |
HTTP response의 응답 헤더에 기록된 코드
Response Code | 의미 |
---|---|
200 | OK |
404 | Not Found |
500 | Internal Error |
... | ... |
자바스크립트의 객체를 문자열로 표현하는 방법
JSON.stringify( object )
JSON.parse( sring )
var original_obj = { pi:3.14, str:"string" };
var json_str = JSON.stringify( original_obj );
// 반환 문자열 : {"pi":3.14,"str":"string"}
var parsed_obj = JSON.parse( json_str );
console.log( original_obj ); // {pi: 3.14, str: "string"}
console.log( parsed_obj ); // {pi: 3.14, str: "string"}
undefined, function 은 변환되지 않고 누락된다.
AJAX를 통해 JSON 데이터를 받아오고 콘솔에 찍는 과정
var req = new XMLHttpRequest();
req.onreadystatechange = function(){
if( this.readyState == 4 ){
data = JSON.parse(this.response); // 받아온 JSON 문자열 데이터를 Javascript 객체로 변환
for( var i = 0 ; i < data.length ; i++ ){ // 데이터가 여러개인 경우 (배열 형태로 값을 받은 경우) 반복문으로 각각의 데이터에 대해 처리
console.log(data[i].id, data[i].msg);
}
}
}
req.open("GET", JSON_DATA_URL);
req.send();