[Web worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers) service for [Angular](https://angular.io).
npm install @nitinkrmr/ngx-webworkerWeb worker
service for Angular.
``shell`
npm i ngx-web-worker
`javascript`
export interface IWebWorkerService {
run
runUrl(url: string, data?: any): Promise
terminate
}
- run
- workerFunction:
- Must be a self-contained function. Cannot reference outside variables.
- You can import other libraries with
importScripts
though
- These are okay:
- `javascript
run(input => input * input, 10);
run(input => {
const square = num => num * num;
return square(input);
}, 10);
const someFunction = (input) => input * input);
run(someFunction, 10);
class Runner {
private webWorkerService = new WebWorkerService();
constructor() {
this.webWorkerService.run(this.someFunction, 10);
}
someFunction() {
return input * input;
}
}
`
- These will probably NOT work:
- `javascriptthis
// this is not okay because inside the context of the web worker is not the same this as here.
run(input => this.square(input), 10);
// this is not okay because _ doesn't exist in the web worker context (assuming tht _ is available here to begin with)`
run(input => {
return _.uniqueId() * input;
}, 10);
- data:
serializable data
- runUrl: Basically the same asurl
- : The url you would use to create aWorker
instancedata
- : Same as the run methodterminate
- : Calling this willterminate
the web worker,promise
if it is still running.
- : The Promise instance returned by run or runUrl.
Check out ngx-web-worker-example for a
sample project, or see app/app.component.ts for usage with an Angular
application.
`
export class AppComponent implements OnInit {
constructor(private _webWorkerService: WebWorkerService) {
}
ngOnInit() {
const input = 100;
const promise = this._webWorkerService.run(this.someCPUHeavyFunction, input);
promise.then(result => console.log(result));
}
someCPUHeavyFunction (input) {
return input * 10;
}
}
``