DoneJS StealJS jQuery++ FuncUnit DocumentJS
4.3.0
5.0.0 3.13.1 2.3.35
  • About
  • Guides
  • API Docs
  • Community
  • Contributing
  • Bitovi
    • Bitovi.com
    • Blog
    • Design
    • Development
    • Training
    • Open Source
    • About
    • Contact Us
  • About
  • Guides
  • API Docs
    • Observables
      • can-bind
      • can-compute
      • can-debug
      • can-define
      • can-define/list/list
      • can-define/map/map
      • can-define-backup
      • can-define-stream
      • can-define-stream-kefir
      • can-event-queue
      • can-kefir
      • can-list
      • can-map
      • can-map-define
      • can-observation
      • can-observation-recorder
      • can-observe
      • can-simple-map
      • can-simple-observable
      • can-stream
      • can-stream-kefir
      • can-value
    • Data Modeling
      • can-connect
      • can-connect-feathers
      • can-fixture
      • can-fixture-socket
      • can-ndjson-stream
      • can-set
    • Views
      • can-component
      • can-stache
      • can-stache-bindings
      • can-stache-converters
      • can-stache-route-helpers
      • can-view-autorender
      • can-view-callbacks
      • can-view-import
      • can-view-live
      • can-view-model
      • can-view-nodelist
      • can-view-parser
      • can-view-scope
      • can-view-target
      • react-view-model
      • react-view-model/component
      • steal-stache
    • Routing
      • can-deparam
      • can-param
      • can-route
      • can-route-hash
      • can-route-mock
      • can-route-pushstate
    • JS Utilities
      • can-assign
      • can-define-lazy-value
      • can-diff
      • can-globals
      • can-join-uris
      • can-key
      • can-key-tree
      • can-make-map
      • can-parse-uri
      • can-queues
        • queue types
          • CompletionQueue
          • can-queues.PriorityQueue
          • can-queues.Queue
        • queues
          • notifyQueue
          • deriveQueue
          • domUIQueue
          • mutateQueue
        • methods
          • batch.start
          • batch.stop
          • enqueueByQueue
          • log
          • logStack
      • can-string
      • can-string-to-any
      • can-util
      • can-zone
      • can-zone-storage
    • DOM Utilities
      • can-ajax
      • can-attribute-encoder
      • can-child-nodes
      • can-control
      • can-dom-data
      • can-dom-events
      • can-dom-mutate
      • can-event-dom-enter
      • can-event-dom-radiochange
      • can-fragment
    • Data Validation
      • can-define-validate-validatejs
      • can-validate
      • can-validate-interface
      • can-validate-legacy
      • can-validate-validatejs
    • Typed Data
      • can-cid
      • can-construct
      • can-construct-super
      • can-data-types
      • can-namespace
      • can-reflect
      • can-reflect-dependencies
      • can-reflect-promise
      • can-types
    • Polyfills
      • can-symbol
      • can-vdom
    • Core
    • Infrastructure
      • can-global
      • can-test-helpers
    • Ecosystem
    • Legacy
  • Community
  • Contributing
  • GitHub
  • Twitter
  • Chat
  • Forum
  • News
Bitovi

batch.start

  • Edit on GitHub

Begin collecting tasks before executing them.

queues.batch.start()

batch.start and batch.stop are used to enqueue many tasks without immediately flushing them. Batching tasks can help improve performance. Read on below for more information.

batch.start increments an internal batchStartCounter. batch.stop decrements it. Once the counter is 0, the notifyQueue and subsequent queues will be flushed.

queues.batch.start();
queues.batch.start();
queues.notifyQueue( console.log, console, [ "notify" ] );
queues.deriveQueue( console.log, console, [ "derive" ] );
queues.mutateQueue( console.log, console, [ "mutate" ] );
queues.batch.stop();
queues.batch.stop();

// Logs:
//   notify
//   derive
//   mutate

Use

By enqueueing many tasks at once, it enables observables like can-observation and can-compute to update their values a single time for multiple changes. For example, by wrapping the changes to the list with batch.start and batch.stop the completeCount property of the list only updates once:

class TodoList extends observe.Array {
    get completeCount() {
        return this.filter( ( todo ) => {
            return todo.complete === true;
        } ).length;
    }
    completeAll() {
        queues.batch.start();
        this.forEach( ( todo ) => {
            todo.complete = true;
        } );
        queues.batch.stop();
    }
}
const todos = new TodoList( [ { complete: false, complete: false } ] );

todos.on( "completeCount", function( completeCount ) {
    console.log( "completeCount is ", completeCount );
} );

todos.completeCount; //-> 0
todos.completeAll();

// Logs:
//   completeCount is 2

CanJS is part of DoneJS. Created and maintained by the core DoneJS team and Bitovi. Currently 4.3.0.

On this page

Get help

  • Chat with us
  • File an issue
  • Ask questions
  • Read latest news