Skip to content

The command queue

Almost everything you can do with the Web SDK from the browser/webpage can be done with the orb() command queue. This guide explains what this is, how it works, and how to use it.

The orb command queue

The JavaScript tracking snippet defines a global orb() function known as the "command queue". It is named this because rather than executing commands immediately (like calling a function), it adds them to a queue and will execute them once the tms.js bootloader is fully loaded.

The tracking snippet defines within the orb() function (which is also an object in JavaScript) a property q as an empty array. Prior to the bootloader loading, calling the orb() function appends the q array with the command.

For example, if you were to run the tracking snippet, run a single command, and then print out the contents of the orb.q variable immediately, you'd see an array, containing the command you just passed to the orb() function:

// We assume the installation snippet has already ran
orb('config', 'SCRIPT_TOKEN_1', { namespace: 'namespace1' });
console.log(orb.q);

// Outputs the following:
// [
//  ['config', 'SCRIPT_TOKEN_1', { namespace: 'namespace1' }]
// ]

Once the bootloader is loaded, it inspects the contents of orb.q and executes each command in order. After that, the orb() function is redefined, so all subsequent calls execute immediately. This pattern abstracts away most of the complexities of asynchronous code!

Adding commands to the queue

All calls to the orb() command queue share a common signature. The first parameter, the "command", is a string that identifies a particular bootloader method. The next parameter identifies the target or object of worth for that command. The last parameter is an object, which contains any other required parameters that the command might need.

All commands are global and are run by the bootloader. For a comprehensive list of all commands that can be executed via the command queue, see the bootloader section of the Web SDK Reference.

Info

Once the bootloader has loaded, all commands are also available as functions under the loaded orb.bootloader object. orb('config', ...) can also be called with orb.bootloader.config(...).