What is tiny-worker?
The tiny-worker npm package is a lightweight implementation of Web Workers for Node.js. It allows you to run JavaScript code in parallel threads, which can help improve the performance of CPU-intensive operations by offloading them to separate worker threads.
What are tiny-worker's main functionalities?
Creating a Worker
This feature allows you to create a new worker thread. The worker can execute code independently of the main thread and communicate back using messages.
const Worker = require('tiny-worker');
const worker = new Worker(function() {
postMessage('Hello from the worker!');
});
worker.onmessage = function(event) {
console.log(event.data); // 'Hello from the worker!'
};
Sending Messages to Worker
This feature allows the main thread to send messages to the worker thread. The worker can then process the message and send a response back to the main thread.
const Worker = require('tiny-worker');
const worker = new Worker(function() {
onmessage = function(event) {
postMessage('Received: ' + event.data);
};
});
worker.onmessage = function(event) {
console.log(event.data); // 'Received: Hello'
};
worker.postMessage('Hello');
Handling Errors in Worker
This feature allows you to handle errors that occur within the worker thread. You can set an error handler to catch and process any errors that are thrown in the worker.
const Worker = require('tiny-worker');
const worker = new Worker(function() {
throw new Error('Something went wrong');
});
worker.onerror = function(error) {
console.error('Worker error:', error.message); // 'Worker error: Something went wrong'
};
Other packages similar to tiny-worker
threads
The threads package is another library for managing worker threads in Node.js. It provides a higher-level API compared to worker_threads and includes features like thread pools and TypeScript support. It is more feature-rich but also more complex than tiny-worker.
node-worker-threads-pool
The node-worker-threads-pool package is a library that builds on top of the worker_threads module to provide a pool of worker threads. This can be useful for managing multiple worker threads efficiently. It offers more advanced thread management capabilities compared to tiny-worker.
tiny-worker
Tiny WebWorker for Server
require()
is available for flexible inline Worker scripts. Optional parameters args
Array & options
Object; see child_process.fork()
documentation.
Example
Creating a Worker from a file
The worker script:
onmessage = function (ev) {
postMessage(ev.data);
};
The core script:
var Worker = require("tiny-worker");
var worker = new Worker("repeat.js");
worker.onmessage = function (ev) {
console.log(ev.data);
worker.terminate();
};
worker.postMessage("Hello World!");
Creating a Worker from a Function
var Worker = require("tiny-worker");
var worker = new Worker(function () {
self.onmessage = function (ev) {
postMessage(ev.data);
};
});
worker.onmessage = function (ev) {
console.log(ev.data);
worker.terminate();
};
worker.postMessage("Hello World!");
Properties
onmessage
Message handler, accepts an Event
onerror
Error handler, accepts an Event
API
addEventListener(event, fn)
Adds an event listener
postMessage()
Broadcasts a message to the Worker
terminate()
Terminates the Worker
License
Copyright (c) 2015 Jason Mulligan
Licensed under the BSD-3 license