我决定沉迷于 TypeScript 和 es6,尤其是 Proxy。
问题是在调试器 (Edge) 中显示了参数的内容和长度,但在代码中,所有转换为数组的方法都返回 [] 或访问长度返回 0。
class Item {
constructor(public resolve: any, public value: any) { };
}
class CounterComponent {
public currentCount: any;
private dictionary = {};
private proxy: any;
constructor() { this.SetProxy(); }
private SetProxy(): void {
this.proxy = new Proxy({}, {
get: (rcvr, name) => {
return () => {
let args: Array<any> = [];
let length = arguments.length; //length==0
let args1 = [...arguments]; //args1==[]
for (let i = 0; i < arguments.length; i++) {
args.push(arguments[i]);
}
let promise = new Promise((resolve, reject) => {
// resolve(123);
let item = new Item(resolve, args);
this.dictionary[name] = item;
});
return promise;
};
}
});
}
public async CallMethodAsync() {
this.currentCount = await this.proxy.AllHello("Всем Привет");
}
public setResult(): void {
let key: string;
for (let name in this.dictionary) {
key = name;
}
let item = <Item>this.dictionary[key];
item.resolve(item.value);
}
}
同时等待fulfills。是否有一个 C# 模拟终结器来了解对象何时被垃圾收集。
问题是箭头函数的局限性之一
最简单的解决方案是使用非箭头函数,例如
替代解决方案:使用休息参数
在这种情况下,它
args已经是一个数组,您可以立即使用它而无需额外的操作。