async function getCampaigns () {
const result = await knex('call as cc')
.where({
'cc.is_obsolete': false,
'cc.is_active': true,
})
.whereNotIn('cc.type_id', TYPES)
.select(
'cc.id',
'cc.value as config',
'cc.type_id as sale_type_id'
);
// делаем что-то с result
return result;
}
try {
const campaigns = await getCampaigns()
} catch (e) {
alert(':(');
}
function getCampaigns () {
return knex('call as cc')
.where({
'cc.is_obsolete': false,
'cc.is_active': true,
})
.whereNotIn('cc.type_id', TYPES)
.select(
'cc.id',
'cc.value as config',
'cc.type_id as sale_type_id'
)
}
if(input === 'complete') {
val === 'true' ? val = true : val = false
data[input] = val
} else {
data[input] = val
}
...
) работает не с массивом, а с итератором по этому массиву. Мы добавляем нашему классу итератор, путём присваивания специальному полю [Symbol.iterator]
функции, которая запускает итератор напрямую из такого же поля нашего массива this.store
. Само собой оно нужно. Разве что можно получить тот же самый итератор из массива неявно так: [Symbol.iterator] = () => this.store.values()
, но под капотом конкретно для массива там происходит то же самое. * [Symbol.iterator]() {
for (const value of this.store) {
yield value;
}
}
// или совсем уж руками:
[Symbol.iterator]() {
const values = this.store;
let index = 0;
return {
next() {
if (index < values.length) {
return {
value: values[index++],
done: false
};
}
return {
done: true
};
}
};
}
let worker = {
someMethod() {
return 1;
},
slow(x) {
alert("Called with " + x);
return x * this.someMethod(); // (*)
}
};
let worker = {
someMethod: function someMethod() {
return 1;
},
slow: function slow(x) {
alert("Called with " + x);
return x * this.someMethod(); // (*)
}
};
const todos = useContext(TodoContext);
const [localTodos, setLocalTodos] = useState(todos);
useEffect(() => setLocalTodos(todos), [todos]);
Можно пагинацию - можно virtual-scroll с той же пагинацией под капотом. Всё будет отлично работать.
Из реальных вопросов связанных с большим количеством записей в таблице:
Вопрос: Сортировка по полям тормозит.
Ответ: Она не нужна, кроме той что по умолчанию - никто не будет листать миллион отсортированных данных. Нужна фильтрация.
Вопрос: Сам запрос количества записей на некоторых базах тормозит.
Ответ: Он не нужен. Если записей больше 100 - прекрасно можно писать "5 из 99+". Никого обычно не волнует насколько там на самом деле больше 99.