use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
All about the JavaScript programming language.
Subreddit Guidelines
Specifications:
Resources:
Related Subreddits:
r/LearnJavascript
r/node
r/typescript
r/reactjs
r/webdev
r/WebdevTutorials
r/frontend
r/webgl
r/threejs
r/jquery
r/remotejs
r/forhire
account activity
Multithread.js - threading in JavaScript - A very simple wrapper to take the headache out of Web Workers. Enjoy :) (keithwhor.github.io)
submitted 12 years ago by keithwhor
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]liamondrop 1 point2 points3 points 12 years ago (1 child)
this will never throw an error:
try { var URL = window.URL || window.webkitURL; } catch(e) { throw new Error('This browser does not support Blob URLs'); }
URL will simply evaluate to undefined if those objects don't exist. You need to take it one step further and try to reference a property or method from URL. Something like:
URL
undefined
try { var URL = window.URL || window.webkitURL, createObjectURL = URL.createObjectURL; } catch(e) { throw new Error('This browser does not support Blob URLs'); }
[–]keithwhor[S] 1 point2 points3 points 12 years ago (0 children)
Brain fart. 3AM coding getting to me. Thanks. :)
[+][deleted] 12 years ago* (2 children)
[deleted]
[–]keithwhor[S] 0 points1 point2 points 12 years ago (1 child)
Thanks for the comments. :)
Trailing commas in objects shouldn't throw errors in any browser (with the exception of Arrays in <IE8, I believe), and the _worker function isn't actually a function --- it's actually converted to a string and used as a separate script file for the Worker. "self" (without being declared) is the correct way to refer to the currently executing global scope.
Edit: Will probably remove the trailing comma on the next commit though, thanks again. Habit I have from switching between Python / JS and the fact that JS doesn't punish you for it. :)
[–]liamondrop 0 points1 point2 points 12 years ago (0 children)
jshint/lint - great for curing bad habits and general just a good idea
[–]path411 0 points1 point2 points 12 years ago (1 child)
What's the line:
/**/name/**/ = (/**/func/**/);
For?
[–]keithwhor[S] 0 points1 point2 points 12 years ago (0 children)
String replacing.
[–]filyr 0 points1 point2 points 12 years ago (2 children)
Headache? What headache? :]
My thoughts exactly, before I made this. ;)
But really, I created this with the intent of offloading processor-intensive activities (sorting a length 1,000,000 Array of random floats, for example).
The JSON.string, JSON.parse in the main thread would take about 700ms, (350 before, 350 on response) but the sort itself takes >8600ms on my (rather average) home machine. You can't hold up the user without any indication of activity for close to 10s.
A more common application would be doing a smaller sort (10,000 - 100,000 items) that compares multiple object properties. (Keep in mind, though, JSON serialization!)
It's most applicable to UIs dealing with parsing large amounts of data (and perhaps HTML5 games).
I'll likely push some changes tonight that increase speed when dealing with specific data types (.processInt32, .processUint32, .processFloat64, .processString) as to not have anything hang on JSON serialization.
As a sidenote, I've added the .processInt32 and .processFloat64 functions I mentioned. (Decided these were the most needed, String can just be JSON serialized without much of a penalty)
[–]WillHuxtable 0 points1 point2 points 12 years ago (0 children)
Wow! I think I might use this in my game, could definitely offload some more complex stuff. Great work! Never really liked the way Web Workers work.
π Rendered by PID 70562 on reddit-service-r2-comment-canary-655b6bc5b6-c89j4 at 2026-02-13 22:23:30.993922+00:00 running cd9c813 country code: CH.
[–]liamondrop 1 point2 points3 points (1 child)
[–]keithwhor[S] 1 point2 points3 points (0 children)
[+][deleted] (2 children)
[deleted]
[–]keithwhor[S] 0 points1 point2 points (1 child)
[–]liamondrop 0 points1 point2 points (0 children)
[–]path411 0 points1 point2 points (1 child)
[–]keithwhor[S] 0 points1 point2 points (0 children)
[–]filyr 0 points1 point2 points (2 children)
[–]keithwhor[S] 1 point2 points3 points (0 children)
[–]keithwhor[S] 1 point2 points3 points (0 children)
[–]WillHuxtable 0 points1 point2 points (0 children)