2021년 7월 27일에 작성된 문서 1번 입니다.
javascript 배운 내용을 정리했습니다.
function B() {
console.log('called at the back!');
}
function A(callback) {
callback(); //callback === B
}
A(B);
[1, 2, 3].map(fucntion(element, index){
return element * element;
})
document.querySelector('#btn')
.addEventListener('click', function(e){
console.log('button clicked');
})
전화 | 문자 |
---|---|
하던 일을 멈추고 받아야 한다. (blocking) | 확인 후, 나중에 답장할 수 있다. (non-blocking) |
요청에 대한 결과가 동시에 일어난다. (synchronous) | 요청에 대한 결과가 동시에 일어나지 않는다. (asynchronous) |
위의 문장들을 코드로 써보면 아래와 같다.
function waitSync(ms){
var start = Date.now();
var now = start;
while(now - start < ms){
now = Date.now();
}
}
// 현재 시각과 시작 시각을 비교해 ms 범위 내에서
// 무한 루프를 도는 blocking 함수다.
function drink(person, coffee){
console.log(person + '는 ' + coffee + '를 마십니다');
}
function orederCoffeeSync(coffee) {
console.log(coffee + '가 접수되었습니다');
waitSync(2000);
return coffee;
}
let customers = [{
name : 'Steve',
request : '카페라떼'
}, {
name : 'John',
request : '아메리카노'
}];
// call synchronously
customers.forEach(function(customer){
let coffee = orderCoffeeSync(customer.request);
drink(customer.name, coffee);
});
위의 문장들을 코드로 써보면 아래와 같다.
function waitASync(callback,ms){
setTimeout(callback, ms);
}
// 특정 시간 이후에 callback 함수가 실행되게 하는
// 브라우저 내장 기능
function drink(person, coffee){
console.log(person + '는 ' + coffee + '를 마십니다');
}
function orederCoffeeSync(coffee) {
console.log(coffee + '가 접수되었습니다');
waitSync(2000);
return coffee;
}
let customers = [{
name : 'Steve',
request : '카페라떼'
}, {
name : 'John',
request : '아메리카노'
}];
function orderCoffeeAsync(menu, callback){
console.log(menu + '가 접수되었습니다.');
waitAsync(function(){
callback(menu);
},2000);
}
// call asynchronously
customers.forEach(function(customer){
orderCoffeeAsync(customer.request, function(coffee){ drink(customer.name, coffee)
});
});
let request = 'caffelatte';
orderCoffeeAsync(request, function(response){
//response -> 주문한 커피 결과
drink(response);
});
let request = 'caffelatte';
orderCoffeeAsync(request).onready = function(response){
//response -> 주문한 커피 결과
drink(response);
};
비동기와 동기의 차이에 대한 아래의 그림을 참조하자.
클라이언트
서버
Written with StackEdit.