프로그래밍/HTML, Javascript, CSS

[자바스크립트] Node.js, 자바스크립트 Object(Associative array) 종료 및 콜백

포도알77 2019. 3. 10. 15:46
 jQuery에서 동일한 DOM의 반복적인 selector를 사용을 방지하기 위해서나, K-V 형식으로 데이터를 저장할때 Object를 많이 사용한다. 

 이런 Object안에서 전체 Key를 찾아 순회할 때, Object.keys(obj)형식을 많이 사용한다. 

 특히, Object.keys(obj).forEach(function(k,v){})를 이용하여 Loop 문까지 한번에 처리하는 경우가 많은데, 여기서 Callback을 사용하는 경우 callback 호출후에도 루프가 Break되지 않는 문제가 생긴다.  


var obj = { 'abc':1 , 'bcd':2'};
function run(obj, callback){
	Object.keys(obj).forEach(function(k,v){
		if(k == 'abc') return callback(v);
		console.log(key);
	});
}
function callback(value){
	console.log('DONE', value);
}

run(obj, callback);


// LOG --> DONE abc
// LOG --> bcd


  Object.keys의 forEach의 경우 콜백 함수로 익명 함수 function(k,v)를 받게 되는데, 이 경우에 루프를 돌면 return을 하면 다음 obj의 key를 찾아 오는 동작으로 연결된다. 


 즉, return이 break 역할이 아닌 continue 역할이다. 


 이런 코드를 짜는 경우 지저분해지더라도 Object.keys(obj)를 배열로 받고, for loop를 수행하는게 좋다.



페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사