Main.js
Const CP = require (' child_process '); Const CHILD = Cp.fork ('./child.js '); const Callbackpool = {};child.on (' message ', msg = > {Let msgId = msg._id, cb = Callbackpool[msgid]; if (CB) {cb.resolve (msg); Cleartimeout (Cb.timer); Callbackpool[msgid] = null; }}); Promise.all ([SendMessage ({timeout:1e3}), SendMessage ({timeout:2e3}), SendMessage ({timeout:2e3}), Sendmessa GE ({TIMEOUT:1E3}),]). Then (rv + {log (RV);}). catch (Err = {log (err);}) function SendMessage (MSG, cb) {msg._id = (math.random () * 1e6) | 0; Child.send (msg); Log (' sent ', msg); return new Promise ((resolve, reject) = {Let msgId = msg._id, timer = setTimeout (function () { Let cb = Callbackpool[msgid]; if (CB) {cleartimeout (Cb.timer); Callbackpool[msgid] = null; } Reject (' timeout '); }, 5e3); Callbackpool[msgid] = {Resolve, reject, timer}; });} function log (... args) {Args.unshift (New Date (). toLocaleString ()); Console.log.apply (console, args);}
Child.js
Process.on (' message ', msg = = {doreply (msg);}); function Doreply (msg) {setTimeout (() = {Msg.data = msg._id * 2;sendmessage (msg);}, (Msg.timeout | | 0) * 2);} function SendMessage (msg) {process.send (msg);}
Nodejs process.on (' message ') turn promise