1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochfunction fib(n) { 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return n < 2 ? 1 : fib(n - 1) + fib(n - 2); 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochfunction eternal_fib() { 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch var started = Date.now(); 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch while(true) { 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch fib(20); 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Make page responsive by making a break every 100 ms. 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (Date.now() - started >= 100) { 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch setTimeout(eternal_fib, 0); 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return; 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochfunction run_fib() { 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Let the page do initial rendering, then go. 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch setTimeout(eternal_fib, 200); 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 21