frame-scheduling
Advanced tools
Comparing version 0.2.0 to 0.3.0
@@ -17,8 +17,14 @@ "use strict"; | ||
exports.P_IMPORTANT = 10; | ||
var sortJobsByNumber = function (jobs) { | ||
return Object.keys(jobs).sort(function (left, right) { return Number(left) - Number(right); }); | ||
}; | ||
var frameScheduling = function () { | ||
var listJobs = {}; | ||
var deferScheduled = false; | ||
var jobsSortCached; | ||
var jobsSortActual = false; | ||
var sortJobsByNumber = function (jobs) { | ||
if (!jobsSortActual) { | ||
jobsSortCached = Object.keys(jobs).sort(function (left, right) { return Number(left) - Number(right); }); | ||
jobsSortActual = true; | ||
} | ||
return jobsSortCached; | ||
}; | ||
var runDefer = function () { | ||
@@ -33,2 +39,3 @@ if (!deferScheduled) { | ||
listJobs[priority] = []; | ||
jobsSortActual = false; | ||
} | ||
@@ -44,2 +51,3 @@ listJobs[priority].push(callback); | ||
} | ||
jobsSortActual = false; | ||
}; | ||
@@ -61,6 +69,12 @@ var runJobs = function () { | ||
var job = jobs.shift(); | ||
job && job(); | ||
try { | ||
job && job(); | ||
} | ||
catch (e) { | ||
console.error(e); | ||
} | ||
if (!jobs.length) { | ||
delete listJobs[key]; | ||
keys.length = keys.length - 1; | ||
jobsSortActual = false; | ||
} | ||
@@ -67,0 +81,0 @@ } |
{ | ||
"name": "frame-scheduling", | ||
"version": "0.2.0", | ||
"version": "0.3.0", | ||
"description": "Asynchronous start of functions in JS. Supports priority and interrupt execution every 16 milliseconds, to achieve 60fps.", | ||
@@ -5,0 +5,0 @@ "main": "lib/frameScheduling.js", |
@@ -18,11 +18,19 @@ let defer: Function; | ||
const sortJobsByNumber = (jobs: Object) => | ||
Object.keys(jobs).sort( | ||
(left: string, right: string) => Number(left) - Number(right) | ||
); | ||
const frameScheduling = () => { | ||
const listJobs: { [l: string]: Function[] } = {}; | ||
let deferScheduled = false; | ||
let jobsSortCached: string[]; | ||
let jobsSortActual = false; | ||
const sortJobsByNumber = (jobs: Object) => { | ||
if (!jobsSortActual) { | ||
jobsSortCached = Object.keys(jobs).sort( | ||
(left: string, right: string) => Number(left) - Number(right) | ||
); | ||
jobsSortActual = true; | ||
} | ||
return jobsSortCached; | ||
}; | ||
const runDefer = () => { | ||
@@ -39,2 +47,3 @@ if (!deferScheduled) { | ||
listJobs[priority] = []; | ||
jobsSortActual = false; | ||
} | ||
@@ -53,2 +62,4 @@ listJobs[priority].push(callback); | ||
} | ||
jobsSortActual = false; | ||
}; | ||
@@ -71,7 +82,13 @@ | ||
const job = jobs.shift(); | ||
job && job(); | ||
try { | ||
job && job(); | ||
} catch (e) { | ||
console.error(e); | ||
} | ||
if (!jobs.length) { | ||
delete listJobs[key]; | ||
keys.length = keys.length - 1; | ||
jobsSortActual = false; | ||
} | ||
@@ -78,0 +95,0 @@ } |
9169
218