jsworkerutils
Version:
Helper class that improves the the loading processes, an implementation of multithreaded JS # Development Guide ## About - This library is meant to be a node packaged module that optimize concurrent api requests and simplify as much as possible , the li
35 lines • 1.44 kB
JavaScript
import * as ApiWebWorker from 'file-loader?name=[name].js!./apiwebworkers';
// thirdParty imports
import 'rxjs/add/operator/map';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Observable } from 'rxjs/Observable';
export var layersSt = new Observable();
// Define a global references here
var webWorkerInstances = {};
export var layerStream = new BehaviorSubject({});
/**
* @function defines a function that recieves variables and settings and calls the appropriate
* end point, works for all HTTP requests only works with get request with url auth
* @param {req:RequestTypes} the url and layer to call
* @return observer
*/
var callEndPoints = function (req) {
var layername = req.layername, url = req.url;
webWorkerInstances[layername] = new Worker(ApiWebWorker);
webWorkerInstances[layername].postMessage(url);
webWorkerInstances[layername].addEventListener('message', function (payload) {
var returnObj = { layername: layername, data: payload.data };
layerStream.next(returnObj);
});
};
/**
* @function handles request for multiple endpoints and exposes them as streams of observable objects
* when the data is avaliable
* @param {RequestTypes[]} reqArray - array of objects containing url and layername
*/
export var concurrentRequests = function (reqArray) {
reqArray.forEach(function (req) {
callEndPoints(req);
});
};
//# sourceMappingURL=index.js.map