backburner.js

A rewrite of the Ember.js run loop as a generic microlibrary

Github stars Tracking Chart

backburner.js Build Status

A rewrite of the Ember.js run loop as a generic microlibrary.

TL;DR

A priority queue that will efficiently batch, order, reorder and process work; done via scheduling work on specific queues.

Downloads

API

Constructor, Constructor, Description, ---, ---, new Backburner(), instantiate a Backburner instance with an array of queue names, ### Instance methods, Method, Description, ---, ---, Backburner#run, execute the passed function and flush any deferred actions, Backburner#defer, defer the passed function to run inside the specified queue, Backburner#deferOnce, defer the passed function to run inside the specified queue, only execute it once, Backburner#setTimeout, execute the passed function in a specified amount of time, Backburner#debounce, execute the passed function in a specified amount of time, reset timer upon additional calls, Backburner#throttle, rate-limit the passed function for a specified amount of time, Backburner#cancel, cancel a deferOnce, setTimeout, debounce or throttle, Backburner#on, Add an event callback. Supports the following events: begin - Fires whenever the runloop begins. Callbacks are passed the current instance and the previous instance.end - Fires whenever the runloop ends. Callbacks are passed the current instance and the next instance., Backburner#off, Removes an event callback, Backburner#join, Join the passed method with an existing queue and execute immediately, if there isn't one use Backburner#run, Backburner#getDebugInfo, Returns debug information for counters, timers and queues, which includes surfacing the stack trace information for the respective calls, #### Alias, Alias, Description, ---, ---, Backburner#schedule, same as defer, Backburner#scheduleOnce, same as deferOnce, Backburner#later, same as setTimeout, ## Example usage

The following code will only cause a single DOM manipulation:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8" />
    <title>Backburner demo</title>
  </head>

  <body>
    <div id="name"></div>

    <script type="module">
      import Backburner from './dist/es6/backburner.js'

      var backburner = new Backburner(['render']),
        person = {name: 'Erik'};

      function updateName() {
        document.querySelector('#name').innerHTML = person.name;
      }

      function setName(name) {
        person.name = name;
        backburner.deferOnce('render', updateName);
      }

      backburner.run(function() {
        setName('Kris');
        setName('Tom');
        setName('Yehuda');
      });
    </script>
  </body>
</html>

Main metrics

Overview
Name With OwnerBackburnerJS/backburner.js
Primary LanguageTypeScript
Program languageJavaScript (Language Count: 3)
Platform
License:MIT License
所有者活动
Created At2013-04-10 15:50:01
Pushed At2023-11-17 20:13:23
Last Commit At2023-11-17 12:13:20
Release Count32
Last Release Namev2.8.0 (Posted on 2023-11-17 12:13:21)
First Release Namev0.2.0 (Posted on )
用户参与
Stargazers Count391
Watchers Count19
Fork Count80
Commits Count768
Has Issues Enabled
Issues Count77
Issue Open Count10
Pull Requests Count256
Pull Requests Open Count23
Pull Requests Close Count53
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private