- 예시: window.setTimeout() //window는 전역객체라 생략 가능
function run() { setTimeout(function() { var msg = "hello codesquad"; console.log(msg); //이 메시지는 즉시 실행되지 않습니다. }, 3000); //3초 뒤 실행된다. (지연실행) } run(); // 이처럼 늦게 실행되는 것을 비동기라 한다.
- 동기(synchronous): 동시에 일어난다. 요청을 하면 응답을 받아야지만 다음 동작이 일어난다. 직렬적으로 실행된다.
- 비동기(asynchronous): 동시에 일어나지 않는다. 요청한 그 자리에서 결과가 주어지지 않는다. 병렬적으로 실행된다.
- 비동기 처리 방식이 필요한 이유: 동기적으로 앱, 웹을 구성할 경우 데이터를 수신하는 것과 페이지를 표시하는 것이 순차적으로 진행되기 때문에 실행속도가 기하급수적으로 느려진다. 비동기적으로 처리할 경우 데이터를 수신하고, 페이지를 구성하는 것이 병렬적으로 실행되어 더 효율적인 처리가 가능해진다.
- getElementById() : id정보를 통해 찾을 수 있다.
document.getElemntById("idname"); document.getElemntById("idname").style.display = "block"; //display="block"으로 변경 document.getElemntById("idname").innerText="HI"; //innerText 변경
- querySelector(): CSS 스타일을 결정할 때 사용하던 Selector 문법을 이용해 DOM에 접근
document.querySelector("#idname"); //id로 검색 document.querySelector(".classname"); //class로 검색 document.querySelector("body .classname"); //body 안의 class 검색 document.querySelector(".classname1 > .classname2"); //classname1의 자식요소인 classname2 검색
- querySelectorAll() : All 메소드 Nodelist로 검색한 결과를 반환한다.
var divtag = document.querySelectorAll("div"); //id, class도 위와 같이 검색 가능, div 태그 모두 반환한다. 리스트 형식으로 접근 가능하다. console.log(divtag[0]); //첫번째 div 태그 console.log(divtag[2]); //두번째 div 태그
- 예: 마우스로 화면의 크기를 조절, 어떤 것을 클릭, 스크롤, 드래그 등
var el = document.querySelector(".classname");
el.addEventListener("click", function(){
//do something.. //el 변수에 저장한 값을 클릭하면 함수를 실행한다.
}, false);
콜백함수는 이벤트 발생시 실행
Browser Object
var el = document.getElementById("div");
el.addEventListener("click", function(evt){
console.log(evt.target);
console.log(evt.target.nodeName); //el 변수에 저장된 값을 클릭하면 콘솔로그에 요소와 노드이름을 남기는 함수를 실행한다.
}, false);
JSON, XML, HTML, 텍스트 파일 등으로 데이터를 주고 받을 수 있다.
function ajax(data) {
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", function() {
console.log(this.responseText);
});
oReq.open("GET", "http://www.example.org/getData?data=data");//parameter를 붙여서 보낼수있음.
oReq.send();
}
{
"name" : "ddungi"
"favorites" : ["appple", "orange"]
}
var oReq = new XMLHttpRequest();
oReq.addEventListener("load", function() {
console.log(this.responseText);
});
oReq.open("GET", "./json.txt");
oReq.send();
Referce: