- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个装饰器,它接受一个方法并在该方法未在指定超时(使用方法参数指定)内完成时抛出错误。不指定超时应该导致方法运行,就好像参数不存在一样。
export const setMethodTimeout = (): Function => {
return function(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) {
const context = this;
const args: DecoratorArgumentType = arguments;
if (args.timeout) {
const timer = setTimeout(() => {
throw new Error('The method did not finish before the specified timeout.');
}, args.timeout);
const originalMethod = descriptor.value;
descriptor.value = function() {
originalMethod
.apply(context, args)
.then((result: any) => {
clearTimeout(timer);
return result;
})
.catch((e: Error) => {
throw e;
});
};
}
return descriptor;
};
};
现在当我尝试在我的类方法上使用这个装饰器时:
@setMethodTimeout
public async getMap(params: GetMapParams, api: ApiType, reqConfig?: RequestConfiguration): Promise<Blob> {
//...
}
我收到以下 typescript 错误:
‘setMethodTimeout’ accepts too few arguments to be used as a decorator here. Did you mean to call it first and write ‘@setMethodTimeout()’?
为什么会这样?
最佳答案
它需要一个函数调用,因为您要用附加函数 setMethodTimeout
包装装饰器。如果您像这样删除它,它将在没有函数调用语法的情况下工作:
export const function setMethodTimeout(target: any, propertyKey: string | symbol, descriptor: PropertyDescriptor) {
const context = this;
const args: DecoratorArgumentType = arguments;
if (args.timeout) {
const timer = setTimeout(() => {
throw new Error('The method did not finish before the specified timeout.');
}, args.timeout);
const originalMethod = descriptor.value;
descriptor.value = function() {
originalMethod
.apply(context, args)
.then((result: any) => {
clearTimeout(timer);
return result;
})
.catch((e: Error) => {
throw e;
});
};
}
return descriptor;
};
关于Typescript 装饰器 - 接受的参数太少,无法在此处用作装饰器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62000429/
我正在尝试将之前使用 serial->write... 函数从 GUI 读取的 7 个变量发送到我的微 Controller 。 我在我的微 Controller 上写了一个小程序,如果有输入,它就会
我正在通过制作一个通用的 List 来学习继承类(class)。 List可以是 Unordered列表,Ordered列表,一个 Stack , 或 Queue . 我的 List类看起来像这样:
我必须使用非科学(即无尾数/指数/E)字符串转换十进制数。我的代码如下所示: /*! \brief Converts a XML Schema Decimal */ char *ToDecimal(d
private static void Main(string[] args) { for (;;) { TemporaryCityTool.TemporaryCity
我在 YARN 集群 (HDP 2.4) 中使用 Spark,设置如下: 1 个主节点 64 GB RAM(50 GB 可用) 24 核(19 核可用) 5个从节点 每个 64 GB RAM(50 G
这是我使用 powershell 脚本的第一天我正在尝试使用 VMM Cmdlet Get-SCVirtualMachine当我像 这样使用它时它工作正常 PS C:\> $VM = Get-SCVi
我决定在 RubyMine 7.1.4 中使用远程 Ruby SDK。 设置了 Vagrant 机器( hashicorp/precise32 ),RVM、Ruby 2.2.1p85(2015-02-
我在 sklearn 上使用 Xgboost 实现进行 kaggle 竞赛。但是,我收到此“警告”消息: $ python Script1.py /home/sky/private/virtualen
我是一名优秀的程序员,十分优秀!