本文整理汇总了TypeScript中worker_threads.Worker类的典型用法代码示例。如果您正苦于以下问题:TypeScript Worker类的具体用法?TypeScript Worker怎么用?TypeScript Worker使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Worker类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的TypeScript代码示例。
示例1: Promise
return new Promise((resolve, reject) => {
const worker = new workerThreads.Worker(__filename, {
workerData: script
});
worker.on('message', resolve);
worker.on('error', reject);
worker.on('exit', (code) => {
if (code !== 0)
reject(new Error(`Worker stopped with exit code ${code}`));
});
});
开发者ID:ChaosinaCan,项目名称:DefinitelyTyped,代码行数:11,代码来源:worker_threads.ts
示例2: initialize
initialize() {
this._worker = new Worker(path.resolve(__dirname, './threadChild.js'), {
eval: false,
stderr: true,
stdout: true,
workerData: {
cwd: process.cwd(),
env: {
...process.env,
JEST_WORKER_ID: String(this._options.workerId),
} as NodeJS.ProcessEnv,
// Suppress --debug / --inspect flags while preserving others (like --harmony).
execArgv: process.execArgv.filter(v => !/^--(debug|inspect)/.test(v)),
silent: true,
...this._options.forkOptions,
},
});
this._worker.on('message', this.onMessage.bind(this));
this._worker.on('exit', this.onExit.bind(this));
this._worker.postMessage([
CHILD_MESSAGE_INITIALIZE,
false,
this._options.workerPath,
this._options.setupArgs,
]);
this._retries++;
// If we exceeded the amount of retries, we will emulate an error reply
// coming from the child. This avoids code duplication related with cleaning
// the queue, and scheduling the next call.
if (this._retries > this._options.maxRetries) {
const error = new Error('Call retries were exceeded');
this.onMessage([
PARENT_MESSAGE_CLIENT_ERROR,
error.name,
error.message,
error.stack!,
{type: 'WorkerError'},
]);
}
}
开发者ID:elliottsj,项目名称:jest,代码行数:45,代码来源:NodeThreadsWorker.ts
示例3: createContext
};
} else {
const script = workerThreads.workerData;
workerThreads.parentPort!.postMessage(script);
}
}
{
const { port1, port2 } = new workerThreads.MessageChannel();
port1.on('message', (message) => console.log('received', message));
port2.postMessage({ foo: 'bar' });
}
{
if (workerThreads.isMainThread) {
const worker = new workerThreads.Worker(__filename);
const subChannel = new workerThreads.MessageChannel();
worker.postMessage({ hereIsYourPort: subChannel.port1 }, [subChannel.port1]);
subChannel.port2.on('message', (value) => {
console.log('received:', value);
});
worker.moveMessagePortToContext(new workerThreads.MessagePort(), createContext());
} else {
workerThreads.parentPort!.once('message', (value) => {
assert(value.hereIsYourPort instanceof workerThreads.MessagePort);
value.hereIsYourPort.postMessage('the worker is sending this');
value.hereIsYourPort.close();
});
}
}
开发者ID:ChaosinaCan,项目名称:DefinitelyTyped,代码行数:30,代码来源:worker_threads.ts
示例4: assert
});
};
} else {
const script = workerThreads.workerData;
workerThreads.parentPort!.postMessage(script);
}
}
{
const { port1, port2 } = new workerThreads.MessageChannel();
port1.on('message', (message) => console.log('received', message));
port2.postMessage({ foo: 'bar' });
}
{
if (workerThreads.isMainThread) {
const worker = new workerThreads.Worker(__filename);
const subChannel = new workerThreads.MessageChannel();
worker.postMessage({ hereIsYourPort: subChannel.port1 }, [subChannel.port1]);
subChannel.port2.on('message', (value) => {
console.log('received:', value);
});
} else {
workerThreads.parentPort!.once('message', (value) => {
assert(value.hereIsYourPort instanceof workerThreads.MessagePort);
value.hereIsYourPort.postMessage('the worker is sending this');
value.hereIsYourPort.close();
});
}
}
开发者ID:CNBoland,项目名称:DefinitelyTyped,代码行数:30,代码来源:worker_threads.ts
示例5: send
send(request: ChildMessage, onProcessStart: OnStart, onProcessEnd: OnEnd) {
onProcessStart(this);
this._onProcessEnd = onProcessEnd;
this._retries = 0;
this._worker.postMessage(request);
}
开发者ID:elliottsj,项目名称:jest,代码行数:8,代码来源:NodeThreadsWorker.ts
示例6: onExit
onExit(exitCode: number) {
if (exitCode !== 0) {
this.initialize();
if (this._request) {
this._worker.postMessage(this._request);
}
} else {
this._shutdown();
}
}
开发者ID:Volune,项目名称:jest,代码行数:11,代码来源:NodeThreadsWorker.ts
示例7: onProcessEnd
send(request: ChildMessage, onProcessStart: OnStart, onProcessEnd: OnEnd) {
onProcessStart(this);
this._onProcessEnd = (...args) => {
// Clean the request to avoid sending past requests to workers that fail
// while waiting for a new request (timers, unhandled rejections...)
this._request = null;
return onProcessEnd(...args);
};
this._request = request;
this._retries = 0;
this._worker.postMessage(request);
}
开发者ID:Volune,项目名称:jest,代码行数:14,代码来源:NodeThreadsWorker.ts
注:本文中的worker_threads.Worker类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论