如何实现一个装饰器,使一个类的所有方法可自动链接?
我有以下课程:
class MyClass {
async foo() { console.log(1); }
async bar() { console.log(2); }
}
我希望能够执行以下操作:
@chainableMethods
class MyClass {
...
}
const myInstance = MyClass();
myInstance
.foo()
.bar();
答案 0 :(得分:-1)
您可以尝试
function chainableMethods (constructor) {
let funcs = Object.getOwnPropertyNames(constructor.prototype);
for (var i in funcs) {
let func = funcs[i];
let oldFunc = constructor.prototype[func];
constructor.prototype[func] = (...args) => {
let result = oldFunc.apply(this, args);
return result || constructor.prototype;
// Using 'result ||' for cases when a function does return something useful
// You can remove it if it doesn't suit your requirement.
}
}
}
如果您只打算在解决bar
的承诺后才运行foo
,那么我认为这是不可能的。