12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 'use strict';
- const PromiseInspection = require('./PromiseInspection').PromiseInspection;
- function defer() {
- let resolve = null;
- let reject = null;
- const promise = new Promise((resolver, rejecter) => {
- resolve = resolver;
- reject = rejecter;
- });
- return {
- promise,
- resolve,
- reject
- };
- }
- function now() {
- return Date.now();
- }
- function duration(t1, t2) {
- return Math.abs(t2 - t1);
- }
- function checkOptionalTime(time) {
- if (typeof time === 'undefined') {
- return true;
- } else {
- return checkRequiredTime(time);
- }
- }
- function checkRequiredTime(time) {
- return typeof time === 'number' && time === Math.round(time) && time > 0;
- }
- function delay(millis) {
- return new Promise(resolve => setTimeout(resolve, millis));
- }
- function reflect(promise) {
- return promise
- .then(value => {
- return new PromiseInspection({ value });
- })
- .catch(error => {
- return new PromiseInspection({ error });
- });
- }
- function tryPromise(cb) {
- try {
- const result = cb();
- return Promise.resolve(result);
- } catch (err) {
- return Promise.reject(err);
- }
- }
- module.exports = {
- now,
- defer,
- delay,
- reflect,
- duration,
- tryPromise,
- checkOptionalTime,
- checkRequiredTime
- };
|