Я работаю над веб-приложением, которое анализирует CSV-файл и отображает результаты поиска в таблице. Проблема в том, что функция поиска возвращает null. Похоже, это связано с callback-функцией, которая должна возвращать данные для поиска.
Вот что должно происходить:
Функция fileToArray() создает массив из CSV
Функция search() ищет в массиве и возвращает строку с результатами
Функция displayTable() выводит эту строку в таблицу
Я пробовал менять порядок вызовов функций, но безуспешно. Вот часть кода:
const fileToArray = () => {
// Код для чтения CSV-файла
// ...
};
const search = (form, callback) => {
let lib = callback;
// Код поиска
// ...
};
// HTML кнопка
<button onclick="displayTable(search(document.getElementById('search-params'), fileToArray), $('#card-display'))">
Поиск
</button>
Буду благодарен за помощь в понимании, как правильно организовать callback-функции в этом случае.
на самом деле, проблема может быть в том, что ты пытаешься использовать результат асинхронной операции синхронно. попробуй обернуть весь процесс в async функцию:
async function doSearch() {
const data = await fileToArray();
const results = search(document.getElementById(‘search-params’), data);
displayTable(results, $(‘#card-display’));
}
и повесь эту функцию на клик по кнопке. это должно решить проблему с null результатом, так как теперь все будет выполняться в правльном порядке. удачи с отладкой!
Похоже, проблема в асинхронности. FileToArray() наверняка асинхронная, поэтому search() получает undefined вместо данных. Попробуй использовать промисы или async/await. Например:
async function handleSearch() {
const data = await fileToArray();
const results = search(document.getElementById(‘search-params’), data);
displayTable(results, $(‘#card-display’));
}
Так все выполнится в нужном порядке. Дай знать, если поможет!