threadTimeouts_worker.js (1132B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 var gTimeoutId; 6 var gTimeoutCount = 0; 7 var gIntervalCount = 0; 8 9 function timeoutFunc() { 10 if (++gTimeoutCount > 1) { 11 throw new Error("Timeout called more than once!"); 12 } 13 postMessage("timeoutFinished"); 14 } 15 16 function intervalFunc() { 17 if (++gIntervalCount == 2) { 18 postMessage("intervalFinished"); 19 } 20 } 21 22 function messageListener(event) { 23 switch (event.data) { 24 case "startTimeout": 25 gTimeoutId = setTimeout(timeoutFunc, 2000); 26 clearTimeout(gTimeoutId); 27 gTimeoutId = setTimeout(timeoutFunc, 2000); 28 break; 29 case "startInterval": 30 gTimeoutId = setInterval(intervalFunc, 2000); 31 break; 32 case "cancelInterval": 33 clearInterval(gTimeoutId); 34 postMessage("intervalCanceled"); 35 break; 36 case "startExpression": 37 // eslint-disable-next-line no-implied-eval 38 setTimeout("this.postMessage('expressionFinished');", 2000); 39 break; 40 default: 41 throw "Bad message: " + event.data; 42 } 43 } 44 45 addEventListener("message", messageListener, false);