자바스크립트는 오랫동안 비동기 처리를 위해 콜백 함수나 Promise를 사용해 왔습니다. 하지만 ES2017에서 도입된 async/await 문법은 비동기 코드를 작성하기 훨씬 간편하게 만들어주었습니다. 이번 블로그 포스트에서는 async/await를 이용하여 자바스크립트에서 데이터를 정렬하는 방법을 알아보겠습니다.
데이터 정렬을 위한 비동기 함수 작성
비동기적으로 데이터를 정렬하기 위해서는 비동기 함수를 작성해야 합니다. async 키워드를 함수 앞에 붙이면 해당 함수는 항상 Promise를 반환하게 됩니다. 예를 들어, 다음과 같은 비동기 함수를 작성해보겠습니다.
async function sortData(data) {
// 데이터 정렬 로직
// ...
return sortedData;
}
위의 코드에서는 sortData
라는 비동기 함수를 정의하였습니다.
await 키워드를 이용한 비동기 처리
비동기 함수 내에서 다른 비동기 작업을 기다리기 위해서는 await
키워드를 사용합니다. await
키워드 뒤에는 Promise를 반환하는 비동기 함수나 Promise 객체를 작성합니다. 이후 await
키워드가 포함된 코드가 비동기 작업이 완료될 때까지 실행이 중지되며, 작업이 완료되면 결과를 반환합니다.
async function sortData(data) {
// 데이터 정렬 로직
const sortedData = await someAsyncFunction(data);
return sortedData;
}
위의 코드에서는 someAsyncFunction
이라는 비동기 함수를 호출하고 그 결과를 sortedData
변수에 할당하였습니다. someAsyncFunction
이 비동기 작업을 완료한 후에는 sortedData
가 반환됩니다.
예제: 숫자 배열 정렬하기
이제 실제로 async/await를 이용하여 데이터를 정렬해보는 예제를 살펴보겠습니다. 아래는 숫자 배열을 오름차순으로 정렬하는 비동기 함수입니다.
async function sortNumbers(numbers) {
const sortedNumbers = await bubbleSort(numbers);
return sortedNumbers;
}
async function bubbleSort(numbers) {
let len = numbers.length;
let swapped;
do {
swapped = false;
for (let i = 0; i < len-1; i++) {
if (numbers[i] > numbers[i + 1]) {
[numbers[i], numbers[i + 1]] = [numbers[i + 1], numbers[i]];
swapped = true;
}
}
} while (swapped);
return numbers;
}
const unsortedNumbers = [5, 3, 8, 2, 1];
sortNumbers(unsortedNumbers)
.then(sortedNumbers => console.log(sortedNumbers));
위의 코드에서 sortNumbers
함수는 bubbleSort
함수를 호출하고 그 결과를 반환합니다. bubbleSort
함수는 버블 정렬 알고리즘을 이용하여 숫자 배열을 정렬합니다. 정렬된 결과는 Promise로 반환되며, 이를 then
메소드를 이용하여 비동기적으로 처리할 수 있습니다.
결론
이번 블로그 포스트에서는 자바스크립트의 async/await를 이용한 데이터 정렬에 대해서 알아보았습니다. async/await를 이용하면 비동기적인 작업을 간편하게 처리할 수 있으며, 코드의 가독성을 높일 수 있습니다. 자바스크립트에서 데이터 정렬과 같은 비동기 작업을 처리할 때는 async/await를 적극적으로 활용해보세요.
Happy coding!