UNPKG

promall

Version:

Make creating and handling promises easy

81 lines (66 loc) 1.92 kB
'use strict' const p = require('./promall'); function out(msg, label){ if(msg !== null && msg !== undefined){ if(label && label.length){ label = `"${label}" = `; } else { label = ''; } if(msg instanceof Object){ if(label === ''){ label = ' - '; } console.log(label + JSON.stringify(msg)); } else { console.log(label + msg); } } } async function test(){ var f1 = function(x, y, z) { out(x, 'x'); out(y, 'y'); out(z, 'z'); return x + y + z }; var p1 = p(f1, 1,2,3); out(p1, 'p1') await p1.then((res) => { out(res, 'p1.res') }) var a = 1; var b = 2; var p2 = p.wrap((x, y) => { return x + y; }); await p2(a, b).then((res) => out(res, 'p2')); await p2(5, 2).then(res => out(res, 'p3')); var pp = function(k, m) { return new Promise((resolve, reject) => { resolve(k + m); }); }; await p(pp, 1, 2).then((res) => out(res, 'p-pp')); await p.wrap(pp)(3, 4).then((res) => out(res, 'pf-pp')); await p(() => { throw "THIS IS AN ERROR"}) .then((res) => out(res, 'pe1')) .catch((err) => out(err, 'pe-err1')); p.doNotWrapErrors(); try{ p.await(p(() => { throw "THIS IS ANOTHER ERROR"}) .then((res) => out(res, 'pe2')) .catch((err) => out(err, 'pe-err2'))); } catch(error){ console.log("Caught the unwrapped error"); console.error(error); } var k1 = (a) => { console.log(a); return a + 1; } var k2 = (a) => { console.log(a); return a + 10; } var k3 = (a) => { console.log(a); return a + 100; } var k4 = (a) => { console.log(a); return a + 1000; } var chainOfPromiseReturningFunctions = [ p.wrap(k1), p.wrap(k2), p.wrap(k3), p.wrap(k4) ] var chainResult = await p.executeChain(chainOfPromiseReturningFunctions, 0); console.log(`Chain result: ${chainResult}`); return 'Passed'; } p(test).then(result => out("Done: " + result));