面试时间:20210726
面试官很耐心,一步步等我完善,虽然最后一个下标的没完善好
最原始的没加settimeout的时候,注释那里的可以
后续改进,加了settimeout以及如果参数不是promise的时候不能then
最后一次改进,为了能看到具体是哪个promise,采用下标
let promise1=new Promise(function(resolve){
setTimeout(function(){
resolve(1);
},1000);
});
let promise2=new Promise(function(resolve){
resolve(2);
});
console.log(promise1);
console.log(promise2);
Promise.all=function(promise){
let result=[];
let count=0;
let length=promise.length;
let n=0;
return new Promise(function(resolve,reject){
for(let i in promise){//for(let val of promise)
Promise.resolve(promise[i]).then(function(res){
count++;
//result.push(res);
result[i]=res;
if(count===length){
return resolve(result);
}
},function(e){
return reject(e);
})
}
// promise.forEach(val => {
// val.then(function(res){
// result.push(res);
// });
// });
// resolve(result);
})
}
let promiseAll=Promise.all([promise1,promise2]);
promiseAll.then(function(res){
console.log(res);
})