Я хочу обернуть строки (). Каждая функция с генераторами / итераторами машинописи
Это мой первый подход
public * rowIterator1(): IterableIterator<DataTables.RowMethods> {
var self = this.dataTable;
this.dataTable.rows().every(function*(rowIdx) {
console.log(rowIdx);
let row = self.row(rowIdx);
yield row;
});
}
Но функция every () не останавливается, когда yieldстрока называется.
Следующий подход был с асинхронными генераторами
public async * rowIterator3() {
yield await new Promise((res) => {
var self = this;
this.dataTable.rows().every(function (rowIdx) {
console.log(rowIdx);
let row = self.dataTable.row(rowIdx);
res(row);
});
});
}
Та же проблема, console.log говорит:
0 1 2 3 4
Функция не останавливается при вызове yield
В конце я хотел бы получить что-то вроде этого:
DtWrapper.rows((row: JQuery, index: number) => {
do something
}
Ну, после нескольких часов игры это кажетсяРабота.Хотя использование итератора не то, что я ожидал.
public * getRows() {
let rowIndexes = this.dataTable.rows().indexes();
let count = rowIndexes.length;
for (var i = 0; i < count; i++) {
let rowIndex = rowIndexes[i];
let row = this.dataTable.row(rowIndex);
yield $(row.node());
}
}
public test() {
let t = this.getRows(true);
let a = t.next();
a = t.next();
a = t.next();
}