我试图用JS实现“责任链模式”,但是我遇到的问题是,导出“chainController”后,所有外部调用都为NULL。从代码来看,不存在异步问题,这让我很困惑,请大家帮帮我,非常感谢
代码:
/** Chain **/
const Chain = function(handler) {
this.handler = handler;
this.nextHandler = null;
}
Chain.prototype.setNextHandler = function(nextHandler) {
this.nextHandler = nextHandler;
return nextHandler;
}
Chain.prototype.pass = function(...args) {
const result = this.handler(...args);
if (result === 'next') {
return this.nextHandler && this.nextHandler.pass(...args);
}
return result;
}
/** Handlers **/
const equalTen = function(number) {
return (number === 10) ? 'equal-ten' : 'next';
}
const equalTwenty = function(number) {
return (number === 20) ? 'equal-twenty' : 'next';
}
const equalThirty = function(number) {
return (number === 30) ? 'equal-thirty' : 'next';
}
/** Controller **/
const chainController = function(number) {
const checkEqualTen = new Chain(equalTen);
const checkEqualTwenty = new Chain(equalTwenty);
const checkEqualThirty = new Chain(equalThirty);
checkEqualTen
.setNextHandler(checkEqualTwenty)
.setNextHandler(checkEqualThirty);
return checkEqualTen.pass(number);
};
//is problem, when external call him, always get null
let test = chainController(15);
console.log(test);
PIPIONE
相关分类