Turns a Date object into a promise that resolves on that date, with an optional value.
Uses native ES6 promises if available, but falls back to lie. You can override this by calling promDate.setPromise(require('some-es6-compliant-promise-library'));
Use require('prom-date').extend() to expose a 'Date.prototype.promise(value)'.
promDate(date, value, options)
date
is any javascript Date objectvalue
is the value you would like the promise to resolve withoptions
an options object with the following keys (there's only one option ri)rejectPastDates
if true, dates in the past will be immediately rejected rather than immediately resolved. The value they will be rejected with is the same value they would have been resolved with.
- passing
promDate(date, value, "reject")
is shorthand forpromDate(date, value, {rejectPastDates:true})
promDate.extend()
- extends the native Date.prototype to contain a new
Date.prototype.promise(value, options)
promDate.setPromise(someLib)
- By default, this library will use the ES6 Native "Promise" object (or whichever object is "Promise" in the global context).
- If native promises are not found, it wil load the lie library.
- to override this behavior, you can call
promDate.setPromise(somePromiseLibrary)
, so long as that library provides a standard ES6-ishnew Promise(function(resolve,reject){})
constructor.
npm install prom-date
var promDate = require('prom-date');
var date = new Date(Date.now() + 60000);
promDate(date, 6).then(function(x) {
console.log("x contains "+x+" 60 seconds later");
});
With the date prototype helper:
require('prom-date').extend();
var date = new Date(Date.now() + 60000);
date.promise(7).then(function(x) {
console.log("x contains "+x+" 60 seconds later");
});
Rejecting past dates:
var promDate = require('prom-date');
var date = new Date(Date.now() - 1);
promDate(date, 7, 'reject').catch(function(x) {
// rejection! \o/
});
promDate(date, 7, {rejectPastDates:true}).catch(function(x) {
// rejection!
});
Replacing the promises implementation:
var bluebird = require('bluebird')
var promDate = require('prom-date');
promDate.setPromise(bluebird);
promDate(date, 7).then(function(x) {
console.log("bluebird-created my ", x);
})
Chainable for cuteness:
var promDate = require('prom-date').setPromise(require('any-promise')).extend();
(new Date()).promise(1).then( x => console.log("success!",x) );
promDate(new Date, 2).then( x => console.log("i still work too!",x) );