Skip to content

Commit 4f11d3f

Browse files
committed
Add RequestAnimationScheduler
1 parent 5d48f6a commit 4f11d3f

File tree

6 files changed

+30
-9
lines changed

6 files changed

+30
-9
lines changed

docs/all.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

docs/all.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/docs/js/index.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ import '../css/index.css'
22

33
import Processes from '../../index.js'
44

5-
const system = new Processes.ProcessSystem()
5+
const system = new Processes.ProcessSystem(
6+
new Processes.RequestAnimationScheduler()
7+
)
68

79
const rows = 200
810
const columns = 50

src/index.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import ProcessSystem from './processes/process_system'
2+
import RequestAnimationScheduler from './processes/schedulers/request_animation_scheduler'
3+
import DefaultScheduler from './processes/schedulers/default_scheduler'
24

35
export default {
46
ProcessSystem,
7+
RequestAnimationScheduler,
8+
DefaultScheduler,
59
}

src/processes/schedulers/default_scheduler.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,15 @@ class DefaultScheduler {
3030
this.isRunning = false
3131
}
3232

33+
_run(run) {
34+
this.invokeLater(() => {
35+
run()
36+
})
37+
}
38+
3339
run() {
3440
if (this.isRunning) {
35-
this.invokeLater(() => {
36-
this.run()
37-
})
41+
this._run(this.run.bind(this))
3842
} else {
3943
for (let [pid, queue] of this.queues) {
4044
let reductions = 0
@@ -65,9 +69,7 @@ class DefaultScheduler {
6569
}
6670
}
6771

68-
this.invokeLater(() => {
69-
this.run()
70-
})
72+
this._run(this.run.bind(this))
7173
}
7274
}
7375

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import DefaultScheduler from './default_scheduler'
2+
3+
class RequestAnimationScheduler extends DefaultScheduler {
4+
constructor(throttle = 0, reductions_per_process = 8) {
5+
super(throttle, reductions_per_process)
6+
}
7+
8+
_run(run) {
9+
window.requestAnimationFrame(run)
10+
}
11+
}
12+
13+
export default RequestAnimationScheduler

0 commit comments

Comments
 (0)