如何解决如何在打字机装饰器链中传递数据,以保持其执行顺序
我有一种方法,该方法由一堆彼此重叠的装饰器装饰。看起来像这样:
@FirstDataProcessor()
@SecondDataProcessor()
@ThirdDataProcessor()
public async getNecessaryData(): Promise<NecessaryData> {
// here goes some code
return data;
}
所有三个数据处理器装饰器都设计为返回相同类型的数据,即NecessaryData
。也就是说,他们不会更改类型,而是使用值进行一些操作。
以下是这种装饰器的模式:
export const DataProcessor = () => {
return (target: object,key: string | symbol,descriptor: PropertyDescriptor) => {
const original = descriptor.value;
descriptor.value = async function(...args: any[]) {
const data: NecessaryData = await original.apply(this,args);
// some other manipulations with data
return data;
}
}
};
我还没有弄清楚所有装饰器美食在打字稿中是如何工作的,但是在此实现中,据我判断,由于所有装饰器都是异步的,因此无法保证顺序。我需要的是使它们按特定顺序执行,也就是说,第二个装饰器应获取第一个装饰器等的数据。我现在唯一想到的解决方案是通过制作某种外观装饰器,也就是说,装饰器将通过“ async / await”以同步方式执行我需要的所有功能。但是它的执行对我来说仍然很模糊。还能行吗?或者也许有更好的方法呢?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。