Ja, så er du lidt på spanden :( Jeg har kun lige skimmet
specifikationen, så jeg ved ikke om du kan få et brugbart resultat ud
af at sende en reference til window gennem postMessage(). Hvis du ikke
kan det, har jeg et andet forslag:
Skriv check() om, så den kun prøver en (eller et begrænset antal)
datastørrelser for hvert kald, og "kald" den med setInterval(check,
100). I starten af check() kalder du så clearInterval(), og afslutter
med et fornyet kald til setInterval(check,100). På den måde undgår du
at låse browseren.
Dit reelle problem er et helt andet sted, nemlig her:
for(var i=1; i<=blablaantal; i++){
data += 'x';
}
Det er noget nær den mest ineffektive måde at lave en streng af en
bestemt længde på, da browseren skal lave en ny streng hver gang du
bruger +=. Det vil være noget bedre kun at allokere en streng:
data = new Array(blablaantal).toString();
Mit gæt er at det giver dig så meget performanceforbedring, at du
slipper for at tænke på web workers og andet.