Alibaba 가을 모집 전단 시험 문제
1436 단어 자바 script
이것 은 Promise 에 관 한 제목 이다.그동안 복습 한 Promise 에 대한 내용 을 거의 잊 어 버 리 지 않 은 데다 평소 적 게 써 서 제출 할 때 반제품 만 냈 다.이제 제 답 을 여기에 기록 하 겠 습 니 다.
원제
const timeout = ms => new Promise((resolve, reject) => {
setTimeout(() => {
resolve();
}, ms);
});
const ajax1 = () => timeout(2000).then(() => {
console.log('1');
return 1;
});
const ajax2 = () => timeout(1000).then(() => {
console.log('2');
return 2;
});
const ajax3 = () => timeout(2000).then(() => {
console.log('3');
return 3;
});
const mergePromise = ajaxArray => {
//
};
// mergePromise([ajax1, ajax2, ajax3])
mergePromise([ajax1, ajax2, ajax3]).then(data => {
console.log('done');
console.log(data); // data [1, 2, 3]
});
//
// 1
// 2
// 3
// done
// [1, 2, 3]
나의 답
const mergePromise = ajaxArray => {
//
return new Promise((resolve,reject) => {
ajaxArray.push(Promise.resolve(() => null));
let data = [],
arrLen = ajaxArray.length - 1;
ajaxArray.reduce((calc,cur,index) => {
return calc.then((res) => {
res !== undefined?data.push(res):null;
return index !== arrLen?cur():resolve(data);
});
},Promise.resolve());
});
};
좀 더 우아 한 해결책 이 있 을 것 같 아 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.