Promise의 원리 실현--필기 정리
<html>
<head>
<meta charset="utf-8" />
<title>title>
head>
<body>
<script type="text/javascript">
var fn = function(resolve, reject) {
setTimeout(function() {
if (true) {
resolve(' ')
} else {
reject(' ')
}
}, 3000)
}
class AhfPromise {
constructor(fn) {
// successList
this.successList = [];
// failList
this.failList = [];
//pending,fullfilled,rejected
this.state = 'pending';
// ,( )
fn(this.resolveFn.bind(this), this.rejectFn.bind(this))
}
then(successfn, failFn) {
if (typeof successfn == "function") {
this.successList.push(successfn)
}
if (typeof failFn == "function") {
this.failList.push(failFn)
}
}
catch (failFn) {
if (typeof failFn == "function") {
this.failList.push(failFn)
}
}
resolveFn(res) {
this.state = 'fullfilled'
this.successList.forEach(function(item, index) {
//
item(res);
})
}
rejectFn(res) {
this.state = 'rejected'
//
this.failList.forEach(function(item, index) {
item(res);
})
throw Error(" ")
}
}
var p1 = new AhfPromise(fn)
p1.then(res => {
console.log(' ');
console.log(res)
})
p1.then(() => {
})
p1.catch(res => {
console.log(' , ');
console.log(res)
})
script>
body>
html>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
(Javascript) ES6의 주요 특징 정리let을 사용하면 선언한 변수는 블록안에서만 유효하게 된다. const 역시 마찬가지로 블록스코프를 따른다 .const 와 let의 차이점은 const 는 상수로 값을 할당한다는 점이다. 따라서 값을 변경시키려고 하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.