Решил побаловаться TypeScript и es6, а в частности Proxy.
Проблема в том, что в отладчике (Edge) показывется и содержимое и длина arguments, а вот в коде все методы преобразования в массив возвращается [] или обращения к длине возвращает 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);
}
}
При этом await отрабатывает. И еще есть ли аналог C# финализатор, что бы понять когда объект подвергается сборке мусора.
Проблема заключается в том, что одно из ограничений стрелочных функций
Стрелочные функции не имеют собственного объекта arguments, поэтому в теле стрелочных функций arguments будет ссылаться на переменную в окружающей области.
Самое простое решение - использовать не стрелочную функцию, например
get: (rcvr, name) => {
return function() {
let args: Array<any> = [];
...
}
}
Альтернативное решение: использовать rest-параметры
get: (rcvr, name) => {
return (...args)=>{
...
}
}
В этом случае args
уже массив и с ним можно работать сразу без дополнительных операций.
Здравствуйте, подскажите как приучить код к нескольким формам на странице
Использую календарь Air Datepicker с форматированием input type="text" data-date-format="с dd M" value="" class=""
После включения чекбокса меняется значение стиля для указанного блока divЗначение устанавливается left:0; и width: 245px;