1 |
|
2 |
|
3 | var Q = require('q');
|
4 | var started = +(new Date());
|
5 |
|
6 | console.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 |
|
12 | function onOk(value) {
|
13 | console.stamp('promise resolved ok', value);
|
14 | }
|
15 |
|
16 | function onError(value) {
|
17 | console.stamp('promise error with value', value);
|
18 | }
|
19 |
|
20 |
|
21 | function 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 |
|
33 | longAction()
|
34 | .timeout(400, 'timed out')
|
35 | .then(onOk, onError)
|
36 | .done();
|