promise.js

/**
 * @namespace promise
 * @example
 * import promise from '@fantaptik/core';
 * 
 * promise.reject( 1000, "error" ).catch( e => console.log( e ) ); // "error" after 1s
 * promise.resolve( 500, ["a", "b"] ).then( data => console.log( data ) ); // ["a", "b"] after .5s
 */

/**
 * `reject` returns a promise that will reject after the specified `timeout` with `result`.
 * 
 * @name promise.reject
 * @static 
 * @function
 * 
 * @param {number} timeout Timeout in ms.
 * @param {*} result The result to reject.
 * @returns {Promise}
 */
const reject = (timeout, result) => {
    return new Promise( (resolve, reject ) => {
        setTimeout( () => {
            reject( result )
        }, timeout );
    } );
}

/**
 * `resolve` returns a promise that will resolve after the specified `timeout` with `result`.
 * 
 * @name promise.reject
 * @static 
 * @function
 * 
 * @param {number} timeout Timeout in ms.
 * @param {*} result The result to resolve.
 * @returns {Promise}
 */
const resolve = (timeout, result) => {
    return new Promise( (resolve, reject ) => {
        setTimeout( () => {
            resolve( result )
        }, timeout );
    } );
}

export default { reject, resolve };