
setTimeout 함수의 동시 실행 문제는 Node.js의 이벤트 루프와 관련된 문제입니다. 이벤트 루프는 비동기적으로 이벤트를 처리하기 때문에 setTimeout 함수가 동시에 실행되는 것처럼 보이지만, 실제로는 이벤트 루프가 이벤트를 순차적으로 처리하기 때문에 동시에 실행되지 않습니다.
이 문제를 해결하는 방법은 다음과 같습니다.
1. Promise.all() 사용: Promise.all()을 사용하여 setTimeout 함수를 동시에 실행할 수 있습니다. 예를 들어, 다음과 같이 코드를 작성할 수 있습니다.
#hostingforum.kr
javascript
const parallelEvents = require('parallel-events');
parallelEvents.on('myEvent', () => {
Promise.all([
new Promise(resolve => setTimeout(() => resolve('Event 1'), 1000)),
new Promise(resolve => setTimeout(() => resolve('Event 2'), 2000)),
]).then(results => {
console.log(results[0]);
console.log(results[1]);
});
});
parallelEvents.emit('myEvent');
2. async/await 사용: async/await을 사용하여 setTimeout 함수를 동시에 실행할 수 있습니다. 예를 들어, 다음과 같이 코드를 작성할 수 있습니다.
#hostingforum.kr
javascript
const parallelEvents = require('parallel-events');
parallelEvents.on('myEvent', async () => {
const event1 = await new Promise(resolve => setTimeout(() => resolve('Event 1'), 1000));
const event2 = await new Promise(resolve => setTimeout(() => resolve('Event 2'), 2000));
console.log(event1);
console.log(event2);
});
parallelEvents.emit('myEvent');
3. worker_threads 사용: worker_threads를 사용하여 setTimeout 함수를 동시에 실행할 수 있습니다. 예를 들어, 다음과 같이 코드를 작성할 수 있습니다.
#hostingforum.kr
javascript
const parallelEvents = require('parallel-events');
const { Worker } = require('worker_threads');
parallelEvents.on('myEvent', () => {
const worker1 = new Worker(`
setTimeout(() => {
postMessage('Event 1');
}, 1000);
`);
const worker2 = new Worker(`
setTimeout(() => {
postMessage('Event 2');
}, 2000);
`);
worker1.on('message', event => {
console.log(event);
});
worker2.on('message', event => {
console.log(event);
});
});
parallelEvents.emit('myEvent');
위의 방법 중 하나를 사용하여 setTimeout 함수를 동시에 실행할 수 있습니다.
2025-03-21 07:47