@ng-web-apis/workers
Version:
A library for comfortable use of Web Workers API in Angular
23 lines (22 loc) • 1.97 kB
JavaScript
// throw an error using the `setTimeout` function
// because web worker doesn't emit ErrorEvent from promises
export const WORKER_BLANK_FN = `
function(fn){
function isFunction(type){
return type === 'function';
}
self.addEventListener('message', function(e) {
var result = fn.call(null, e.data);
if (result && [typeof result.then, typeof result.catch].every(isFunction)){
result
.then(postMessage)
.catch(function(error) {
setTimeout(function(){throw error}, 0)
})
} else {
postMessage(result);
}
})
}
`;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2VyLWZuLXRlbXBsYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGlicy93b3JrZXJzL3NyYy93b3JrZXIvY29uc3RzL3dvcmtlci1mbi10ZW1wbGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpREFBaUQ7QUFDakQsMkRBQTJEO0FBQzNELE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQW1COUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRocm93IGFuIGVycm9yIHVzaW5nIHRoZSBgc2V0VGltZW91dGAgZnVuY3Rpb25cbi8vIGJlY2F1c2Ugd2ViIHdvcmtlciBkb2Vzbid0IGVtaXQgRXJyb3JFdmVudCBmcm9tIHByb21pc2VzXG5leHBvcnQgY29uc3QgV09SS0VSX0JMQU5LX0ZOID0gYFxuZnVuY3Rpb24oZm4pe1xuICAgIGZ1bmN0aW9uIGlzRnVuY3Rpb24odHlwZSl7XG4gICAgICAgIHJldHVybiB0eXBlID09PSAnZnVuY3Rpb24nO1xuICAgIH1cblxuICAgIHNlbGYuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IGZuLmNhbGwobnVsbCwgZS5kYXRhKTtcbiAgICAgICAgaWYgKHJlc3VsdCAmJiBbdHlwZW9mIHJlc3VsdC50aGVuLCB0eXBlb2YgcmVzdWx0LmNhdGNoXS5ldmVyeShpc0Z1bmN0aW9uKSl7XG4gICAgICAgICAgICByZXN1bHRcbiAgICAgICAgICAgICAgICAudGhlbihwb3N0TWVzc2FnZSlcbiAgICAgICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe3Rocm93IGVycm9yfSwgMClcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9zdE1lc3NhZ2UocmVzdWx0KTtcbiAgICAgICAgfVxuICAgIH0pXG59XG5gO1xuIl19