Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JoshCheek/f03b19570c611fe888c9ef7bbb534f79 to your computer and use it in GitHub Desktop.
Save JoshCheek/f03b19570c611fe888c9ef7bbb534f79 to your computer and use it in GitHub Desktop.
Readline instacloses in worker thread
const readline = require('readline')
const { Worker, isMainThread } = require('worker_threads')
if(isMainThread)
new Promise((resolve, reject) => {
const worker = new Worker(__filename, {})
worker.on('message', message => console.log(message))
worker.on('error', err => reject)
worker.on('exit', resolve)
})
.then(() => console.log('but, that same fn works fine in the main thread:'))
.then(worker)
else
worker()
async function worker() {
const rl = readline.createInterface({input: process.stdin, output: process.stdout })
const onCloses = [() => console.log('readline closed')]
rl.on('close', () => { while(onCloses.length) onCloses.shift()() })
const prompt = () => new Promise((resolve, reject) => {
onCloses.push(reject)
rl.question('> ', resolve)
})
while(true) {
let value
try { value = await prompt() } catch(e) { break }
console.log({ value })
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment