up
This commit is contained in:
parent
ab9ab64bd5
commit
97c8f22bbb
289 changed files with 195 additions and 172 deletions
|
@ -0,0 +1,23 @@
|
|||
|
||||
|
||||
```js run
|
||||
let i = 0;
|
||||
|
||||
let start = Date.now();
|
||||
|
||||
let timer = setInterval(count, 0);
|
||||
|
||||
function count() {
|
||||
|
||||
for(let j = 0; j < 1000000; j++) {
|
||||
i++;
|
||||
}
|
||||
|
||||
if (i == 1000000000) {
|
||||
alert("Done in " + (Date.now() - start) + 'ms');
|
||||
cancelInterval(timer);
|
||||
}
|
||||
|
||||
}
|
||||
```
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
importance: 4
|
||||
|
||||
---
|
||||
|
||||
# Rewrite setTimeout with setInterval
|
||||
|
||||
Here's the function that uses nested `setTimeout` to split a job into pieces.
|
||||
|
||||
Rewrite it to `setInterval`:
|
||||
|
||||
```js run
|
||||
let i = 0;
|
||||
|
||||
let start = Date.now();
|
||||
|
||||
function count() {
|
||||
|
||||
if (i == 1000000000) {
|
||||
alert("Done in " + (Date.now() - start) + 'ms');
|
||||
} else {
|
||||
setTimeout(count, 0);
|
||||
}
|
||||
|
||||
// a piece of heavy job
|
||||
for(let j = 0; j < 1000000; j++) {
|
||||
i++;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
count();
|
||||
```
|
Loading…
Add table
Add a link
Reference in a new issue