function promiseAll(promises) {
return new Promise(function(resolve, reject) {
if (!isArray(promises)) {
return reject(new TypeError('arguments must be an array'));
var promiseNum = promises.length;
var resolvedValues = new Array(promiseNum);
for (var i = 0; i < promiseNum; i++) {
Promise.resolve(promises[i]).then(function(value) {
resolvedValues[i] = value
if (resolvedCounter == promiseNum) {
return resolve(resolvedValues)