Created
June 9, 2019 20:22
-
-
Save JoshCheek/f03b19570c611fe888c9ef7bbb534f79 to your computer and use it in GitHub Desktop.
Readline instacloses in worker thread
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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