Javascript

비동기 처리에 사용되는 JQuery의 Promise 기능과 Deferred 객체

예요 2022. 12. 19. 15:34

JQuery에는 여러 비동기 함수의 결과를 제어하기 위해 Deferred 객체를 사용한다.

 

const getList = function() {
	
	const deferred = $.Deferred();
	
	$.get(url, function(list){
	
		if (list != undefined) {
			deferred.resolve(list);
		} else {
			deferred.reject('error');
		}
	});
	
	return deferred.promise();
}

const getListCount = function() {
	
	const deferred = $.Deferred();
	
	$.get(url, function(count){
	
		if (list != undefined) {
			deferred.resolve(count);
		} else {
			deferred.reject('error');
		}
	});
	
	return deferred.promise();
}

const init = function() {
	
	let deferred = [];
	deferred.push(getList());
	deferred.push(getListCount());
	
	$.when.apply($, deferred).done(function(_list, _count) {
		
		if (_list != undefined) {
		
			_list.forEach(function(index, data) {
				let html =  '<tr>';
				html += ' <td>' + data.NUMBER + '</td>;
				html += ' <td>' + data.TITLE + '</td>;
				html += '</tr>';

				document.querySelector('table tbody').insertadjacenthtml('before', html);
			});
			
		}
		
		if (_count != undefined) {
			document.querySelector('.total-count').innerText = _count;
		}
	});
	
}
728x90