Closed damartripamungkas closed 1 year ago
In your example, the method eventExample
is executed and directly returns. Then the task and listeners are directly cleaned up. You have to return a promise to keep the method in an "executing" state. Something like this:
// my.js
const workerpool = require("workerpool");
function eventExample(delay) {
return new Promise((resolve) => {
let count = 0
const interval = setInterval(() => {
workerpool.workerEmit(`random number: ${Math.random()}`);
count++
if (count >= 10) {
clearInterval(interval)
resolve(42)
}
}, delay)
});
}
// create a worker and register functions
workerpool.worker({
eventExample
});
// pool.js
const workerPool = require("workerpool");
const path = require("node:path");
const pool = workerPool.pool(path.join(__dirname, "my.js"));
pool
.exec('eventExample', [500], {
on: console.log,
})
.then(result => {
console.log('result is in:', result)
return pool.terminate()
})
i got u, thanks
node version : v20.3.1 workerpool version : v6.4.2
question : how to make workerEmit emit a message every time with setInterval? code: