Недавно я начал смотреть на JS и Node.js. Однако мне не понравилось писать код обратного кода, поэтому я начал писать небольшую основу для Node. Я завершил его, но теперь я пытаюсь заставить его работать на многоядерном процессоре с Node Cluster. Проблема в том, что я не могу отправить генератор от мастера к рабочему, поскольку моя инфраструктура основана на генераторах, и я должен заставить рабочих запускать генераторы. Как я могу превратить объект-генератор в JSON, который затем мог бы отправить моим работникам или какой-нибудь другой подход для отправки генератора рабочему? Я попытался просто превратить генератор в JSON, но это привело к пустующему объекту без следующего метода или метода throw.Включите генератор в JSON JS
Вот как пример того, что пинг-понга будет выглядеть так:
Thr.setNumCPUs(require("os").CPUS.length-1)
//not to have one extra because of the master
function ping(times){
var chan = new Thr.Chan();//create new channel
Thr.spwn(function*(){//start a new thr, on any of the cpus
var chan2 = pong(chan);
for (var i= 0;i < times;i++){
yield* chan.send("ping, for the "+(i+1)+" timth");
//wait untill chan is empty, then send a value
console.log(yield* chan2.rcv());
//wait until received the value
}
chan.close();
//close the channel so now on can access it
} ,[]);
}
function pong(chan){
var chan2 = new Thr.Chan();
Thr.spwn(function*(){
var i = 0;
while (!chan.closed){
console.log(yield* chan.rcv());
yield* chan2.send("pong, for the "+(++i)+" timth");
}
chan2.close();
} ,[]);
return chan2;
}
if (cluster.isMaster){
ping(5);
}
Собственный анализатор JSON не может оценивать функции в JSON, они недействительны. –
Я знаю это, но есть ли другой способ разобрать его или отправить результат другому человеку. Я даже не могу получить функцию * .next к строке. – Coder3000
Вам нужно будет реализовать собственный анализатор JSON (!) –