UNPKG

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
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