protex
protex
is like a mutex but for Promises. That is, an instance executes one promise at a time and remains locked until the Promise
is resolved.
Example:
var protex = ; protex; // => false // Submit a promise chain for execution.// The protex instance will remain locked until the returned promise is fulfilled.var promise = protex; promise;
Installation
npm
Get it:
npm install protex
Require it:
var protex = require('protex');
UMD etc.
Copy and paste build/protex.js
or build/protex.min.js
to your project.
API
var prx = protex()
Create a new protex
.
prx.isLocked()
Returns true
if currently locked, false
otherwise.
prx.exec(thing)
Submit thing
for execution. Throws an exception if currently locked.
thing
can be either a function
or a Promise
, although functions are preferred - the reason being that Promises begin to execute the moment they are created, i.e. before prx.exec() is called, meaning that it's possible to circumvent the lock. Passing a function will correctly delay the instantation of the Promise
until prx.exec()
has been called and locking is complete.
If thing
is a function and it doesn't return a Promise
it is assumed that the function is synchronous and the protex
is unlocked immediately after the call returns.
Copyright & License
© 2014 Jason Frame [ @jaz303 / jason@onehackoranother.com ]
Released under the ISC license.