UNPKG

886 BJavaScriptView Raw
1// how to time limit a promise?
2
3var Q = require('q');
4var started = +(new Date());
5
6console.stamp = function stamp() {
7 var elapsed = +(new Date()) - started;
8 var messageArgs = ['at %d ms:', elapsed].concat(Array.prototype.slice.call(arguments, 0));
9 console.log.apply(console, messageArgs);
10}
11
12function onOk(value) {
13 console.stamp('promise resolved ok', value);
14}
15
16function onError(value) {
17 console.stamp('promise error with value', value);
18}
19
20// "normal" promise-returning function, knows nothing about the time limit
21function longAction() {
22 var deferred = Q.defer();
23
24 console.stamp('started long-running promise');
25 setTimeout(function () {
26 console.stamp('resolving long-running promise with 42 after 1 second');
27 return deferred.resolve(42);
28 }, 1000);
29
30 return deferred.promise;
31}
32
33longAction()
34 .timeout(400, 'timed out')
35 .then(onOk, onError)
36 .done();