1. 입력 받기
- 입력받기를 하는 방법에는 prompt와 readline이 있다.
1) prompt
- 쉽게 사용할 수 있지만 node.js 환경에서는 사용할 수 없다는 단점이 있다.
// 문자열을 입력받습니다.
let userInput = prompt("Enter a string:");
// 입력된 문자열을 출력합니다.
console.log("You entered: " + userInput);
1) readline
- 모듈을 사용해야하는 약간의 번거로움은 있지만 node.js 환경에서도 잘 작동한다.
- 입력이 끝나고 난후 close()를 해주지 않으면 무한으로 입력을 받으려고 한다.
const readline = require('readline');
// readline 인터페이스를 만듭니다.
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
// 사용자로부터 입력을 받습니다.
rl.question('Enter a string: ', (answer) => {
// 입력된 문자열을 출력합니다.
console.log(`You entered: ${answer}`);
// readline 인터페이스를 닫습니다.
rl.close();
});
2. 배열 초기화
- 이중 배열의 경우 1차원 배열을 한번 초기화 해주고 2차원 배열을 초기화 해주어야 오류가 발생하지 않는다.
let timeTable = [];
let timeWaitTable = [];
// 2차원 배열 초기화
for (let i = 0; i < 3; i++) {
timeTable[i] = []; // 각 행을 빈 배열로 초기화
timeWaitTable[i] = []; // 각 행을 빈 배열로 초기화
for (let j = 0; j < 2; j++) {
timeTable[i][j] = new Array(4).fill(false); // 각 열을 초기화
timeWaitTable[i][j] = new Array(4).fill(false); // 각 열을 초기화
}
}
3. Promise, async, await
1)promise
- 비동기 처리를 위한 객체로 작업이 완료되었을 때 성공('resolve'), 또는 실패 ('reject')의 상태를 반환한다.
const promise = new Promise((resolve, reject) => {
// 비동기 작업 수행
if (성공 조건) {
resolve('성공한 결과');
} else {
reject('실패한 이유');
}
});
promise.then((result) => {
// 성공했을 때 처리
}).catch((error) => {
// 실패했을 때 처리
});
2)async
- 비동기 작업을 처리하기 위한 함수
- 함수 내에서 'await'키워드를 사용하여 promise가 처리될 때 까지 대기하고 처리된 값을 반환한다.
async function asyncFunction() {
try {
const result = await 비동기_작업();
return result;
} catch (error) {
console.error(error);
throw new Error('에러 발생');
}
}
asyncFunction()
.then((result) => {
// 성공 처리
})
.catch((error) => {
// 실패 처리
});
3)await
- promise가 처리될 때 까지 대기한다.
async function asyncFunction() {
try {
const result = await Promise.resolve('비동기 결과');
console.log(result); // '비동기 결과' 출력
} catch (error) {
console.error(error);
}
}
asyncFunction();
4. 참조
2) async, await, promise 등 : https://springfall.cc/article/2022-11/easy-promise-async-await