Skip to main content

Process

ESProcess

ESProcess.spawn

创建进程

let script = "console.log('spawn ok !!!!!!!!!!')";
// pid返回成功不代表,script中的代码执行成功
const pid = ESProcess.spawn(script);
console.log("pid:", pid);

/**
* pid: 4294967297
* spawn ok !!!!!!!!!!
*/

ESProcess.receive

接收进程消息

  • msg: 接收消息类型如下
    • bool|number|bigint|string|ArrayBuffer|SharedArrayBuffer|NativeObject
    • bool[]|number[]|bigint[]|string[]|ArrayBuffer[]|SharedArrayBuffer[]|NativeObject[]
  • from: 来源pid,可以用于回应消息

const receive = (msg, from) => {
console.log("from", from);
console.log("msg", msg);
};

let script =
`console.log('spawn ok !!!!!!!!!!');
ESProcess.receive=${receive.toString()}
`;
const pid = ESProcess.spawn(script);
console.log("pid:", pid);

ESProcess.send(pid, msg)

发送消息

  • pid: spawn的返回值
  • msg:发送消息类型如下
    • bool|number|bigint|string|ArrayBuffer|SharedArrayBuffer|NativeObject
    • bool[]|number[]|bigint[]|string[]|ArrayBuffer[]|SharedArrayBuffer[]|
const receive = (msg, from) => {
console.log("from", from);
console.log("msg", msg);
};

let script =
`console.log('spawn ok !!!!!!!!!!');
ESProcess.receive=${receive.toString()}
`;
const pid = ESProcess.spawn(script);
console.log("pid:", pid);

setTimeout(() => {
ESProcess.send(pid, "hello world");
}, 1000);

ESProcess.async_spawn

异步创建spawn

const demo = async () => {
const receive = (msg, from) => {
console.log("from", from);
console.log("msg", msg);
};

let script =
`console.log('spawn ok !!!!!!!!!!');
ESProcess.receive=${receive.toString()}
`;
// 返回pid表示,script中的同步代码执行完成
const pid = await ESProcess.async_spawn(script);
console.log("pid:", pid);
ESProcess.send(pid, "hello world");
}

demo().then(r => console.log(r)).catch(e => console.log(e));