전단 기업 면접 문제: 기업 실제 사례-33
function MyPromise(main){
let status = "pending"; //Promise
let tasklist = []; //
let exceptionHander = null;
function resolve(msg) {
if(status == "pending") {
status = "resovled"; // resolved
let next = tasklist.shift(); //
let newp = next(msg); //
if( newp instanceof MyPromise ) { // Promise
// , , Promise
tasklist.forEach( t=>{
newp.then( t )
})
}
}
}
function reject(msg) {
if( status == "pending") { //
status = "rejected";
exceptionHander ? exceptionHander(msg): throw new Error(msg); //
}
}
this.then = function( task ){
tasklist.push(task); //
return this;
}
this.catch = function( fn ){
exceptionHander = fn;
}
this.getStatus = function(){
return status;
}
setTimeout(()=>{
main(resolve, reject);
}, 0)
}
Promise.실현
MyPromise.all = function(args){
let count = 0;
let task = null;
function resolve() {
count++;
if(count == args.length) task();
}
args.forEach(p=>{
p.then(resolve);
})
return {
then( fn ){
task = fn;
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.