jQuery를 사용하지 않고 기본 Deferred 객체를 구현하고 싶습니다. 여기서는 해결 및 거부 함수를 사용하여 완료 및 실패 콜백 만 구현합니다. andCourse는 promise
메서드를이 함수와 연결합니다.jquery를 사용하지 않고 Deferred 객체 구현
나는 순수 JS에서 다음 구현 (편집)하고있는 중이 야 :
function Deferred() {
var d = {};
d.resolve = function() {
d.done(arguments);
}
d.reject = function() {
d.fail(arguments);
}
d.promise = function() {
var x = {};
x.done = function(args) {
return args;
}
x.fail = function(args) {
return args;
}
return x;
}
return d;
}
var v;
var setVal = function() {
var d = new Deferred();
setTimeout(function() {
v = 'a value';
d.resolve(this);
}, 5000);
return d.promise();
};
setVal().done(function() {
console.log('all done :' + v);
});
을하지만 위의 오류가 있습니다 : Object #<Object> has no method 'fail'
내가없는 Deferred()
함수의 반환 된 객체 'D'를 알고를 메소드 완료(). 그리고 내가 Deferred()
에서 d.promise를 반환하면 해결할 수없고 기능을 거부 할 수 없습니다.
Deferred 객체의 간단한 목적을 달성하기 위해 어떤 오류가 있는지 지적하십시오. 당신은 당신이`prototype`에 메소드를 추가해야합니다 new``으로 인스턴스를 만드는 경우 http://jsfiddle.net/SyEmK/14/
: 여기
내가 뭐하는 거지 바이올린입니다. 생성자는 'return d'라고하더라도 인스턴스를 반환합니다. 'var d = Deferred()'를 원할 수도있다 – elclanrsdone이라는 메소드가 없다. 당신이 당신의 사물을 바라 보면, 당신은 결심하고, 거절하고, 약속합니다. setVal()은 이러한 3 가지 메소드를 사용하여 객체의 인스턴스를 반환합니다. – THEtheChad
jQuery는 약속을 구현하는 유일한 라이브러리가 아닙니다. – JayC