В моем случае, поскольку мой Java-код предназначен для переноса на другие языки в ближайшем будущем (главным образом, на C ++), я, по крайней мере, хочу заплатить за слова, чтобы освободить память правильно, чтобы впоследствии помочь в процессе переноса.
Я лично полагаюсь на обнуление переменных в качестве заполнителя для последующего правильного удаления. Например, я трачу время, чтобы свести на нет все элементы массива до фактического удаления (создания нулевого) самого массива.
Но мой случай очень специфичен, и я знаю, что занимаюсь хитами производительности, когда делаю это.
Вы должны вызывать clearTimeout
с номером, который вы храните в this.timeout
в качестве аргумента, каждый раз, когда вы звоните searchEmployee
, чтобы отменить предыдущий тайм-аут.
searchEmployee(e) {
const { entityType } = this.state;
const searchText = this.searchInput.value;
clearTimeout(this.timeout);
if (e.target.value !== "" && searchText.length !== 0) {
this.drop.hide();
if (searchText.length > 3) {
this.timeout = setTimeout(() => {
this.setState({
showSearchLoader: true,
result: [],
resultCounts: [],
hasMoreItems: false,
searchResultsEmpty: false,
entityType: 10,
searchAll: true
});
this.getResults(
searchText,
entityType,
this.searchResultsCount,
0,
false
);
}, 1000);
}
}
}