A minimal implementation of Promises/A+
Please note that the current implementation conforms to v1.0 of Promises/A+ as expressed by v1.3.2 of the test suite. Compliance with Promises/A+ v1.1 (2.x versions of the test suite) is work in progess.
Tillthen is useful as a consise, easy-to-digest implementation of the spec. The source (excluding the UMD boilerplate which deals with exporting the module) is in the 100-line ballpark and an annotated version is also maintained. Having said that, real-world use is not within the authors original intentions as richer, tried libraries already exist.
Tillthen may be used as a CommonJS module on Node or in a browser, either through a plain
tag or as an AMD module. It will be automatically exported in the correct format depending on the
detected environment. To get it,
git clone git://github.com/biril/tillthen or
npm install tillthen.
When working in a browser, without an AMD module loader, include tillthen.js:
and the module will be exposed as the global
console.log"working with version " + tillthenversion;
require when working with CommonJS (e.g. Node). Assuming Tillthen is
var tillthen = require"tillthen";console.log"working with version " + tillthenversion;
Or list as a dependency when working with an AMD loader (e.g. require.js):
// Your moduledefine"tillthen"console.log"working with version " + tillthenversion;;
Besides the self-explanatory
version property, Tillthen features a single method
may be used to create a deferred object, i.e. a pending promise featuring
methods. As an example:
var deferred = tillthendefer;readFile"foo.txt" "utf-8"if errordeferredrejecterror;elsedeferredresolvetext;;return deferredpromise;
defer.resolve(result) will resolve the promise with given
result. Thus, it will fulfill the
result is a value, or cause it to assume
result's (future) state if it's a
defer.reject(reason) will reject the promise with given
deferred.promise exposes the deferred's underlying
promise. Besides the
then method, it features
state property exposing the current state, and a
result property exposing the eventual
fulfillment value or rejection reason.
Note that the deferred object may be used in place of the underlying promise as it also implements
then and exposes
Tillthen is tested on
Promises/A+ Compliance Test Suite. To run it,
make test or
npm test (after
Licensed and freely distributed under the MIT License (LICENSE.txt).
Copyright (c) 2013-2015 Alex Lambiris