let p1 = Promise.resolve(10), p2 = Promise.resolve(20), p3 = Promise.resolve(30); console.log(typeof p1); Promise.map = function(values, cb) { return Promise.all(values.map(function(e) { return new Promise(function(resolve, reject) { cb(e, resolve); }); })); } Promise.map([p1, p2, p3], function(p, cb) { p.then(function(value) { cb(value + 10); }) }).then(function(value) { console.log(value[0]); })