跳至主要內容

自定义装饰器

约 105 字

自定义装饰器

export function methodDecorator() {
    return function(target: unknown, propertyKey: string,
        descriptor: PropertyDescriptor) {
        // 保存原方法的引用
        const originalMethod = descriptor.value;

        // 编辑 descriptor 参数的value属性
        descriptor.value = async function(...args: unknown[]) {

            return new Promise((resolve) => {
                // 在调用原方法前做点什么

                const result = originalMethod.apply(this, args); // 调用原方法
                resolve(result);

            }).then((res) => {

                // 在调用原方法后做点什么

            }).catch((error) => {

            });
        };
        // 返回编辑后的属性描述对象
        return descriptor;
    };
}

上次编辑于: