promall
Version:
Make creating and handling promises easy
81 lines (66 loc) • 1.92 kB
JavaScript
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));