Promise 작성
function NewPromise (fn) {
this.state = 'pending'
this.fulfillList = []
this.rejectList = []
fn(this.resolve.bind(this), this.reject.bind(this))
//
}
NewPromise.prototype.resolve = function (data) {
this.state = 'fulfilled'
var args = [].slice.call(arguments)
setTimeout(function() {
this.fulfillList.forEach(function ( itemFn, key, arr) {
itemFn.apply(null, args)
arr.shift()
})
}.bind(this), 0)
} //
NewPromise.prototype.reject = function (data) {
this.state = 'rejected'
var args2 = [].slice.call(arguments)
setTimeout(function() {
this.rejectList.forEach(function ( itemFn, key, arr) {
itemFn.apply(null, args2)
arr.shift()
})
}.bind(this), 0)
}
//
NewPromise.prototype.done = function (handle) {
if(typeof handle === 'function') {
this.fulfillList.push(handle)
} else {
throw new Error(' ')
return this
}
}
//
NewPromise.prototype.fail = function (handle) {
if(typeof handle === 'function') {
this.rejectList.push(handle)
} else {
throw new Error(' ')
return this
}
}
NewPromise.prototype.then = function (fulfiil, reject) {
this.done( fulfill ) || function () {}
.fail(reject) || function () {}
return this
}
NewPromise.prototype.always = function (handle) {
this.done(handle) || function () {}
.fail(handle) || function () {}
return this
}
var prm = NewPromise(function (resolve, reject) {
setTimeout(function () {
resolve(' ')
reject(' ')
}, 1000)
})
prm.then(function (data) {
console.log(data)
}).fail(function (data) {
console.log(data)
})
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.