Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. function makeWorker() {
  2. return new Worker(URL.createObjectURL(new Blob([
  3. `onmessage = function(message) {
  4. const data = message.data;
  5. postMessage({ status: 1 });
  6. postMessage({ result: eval.call(this, data.code), status: 2 });
  7. }`], { type: 'text/javascript' })));
  8. }
  9.  
  10. function timedEval(code, timeout = 1000) {
  11. return new Promise((resolve, reject) => {
  12. const worker = makeWorker();
  13.  
  14. worker.onmessage = function(message) {
  15. const data = message.data;
  16. if (data.status === 1) {
  17. setTimeout(() => {
  18. worker.terminate();
  19. reject(new Error('Script evaluation took too long!'));
  20. }, timeout);
  21. } else if (data.status === 2) {
  22. resolve(data.result);
  23. }
  24. };
  25.  
  26. worker.postMessage({ code, status: 0 });
  27. });
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement