#javascript #node.js #events
#javascript #node.js #Мероприятия
Вопрос:
Я пытаюсь запустить событие с некоторыми данными вместе с ним. Данные представляют собой объект с 3 большими массивами чисел. Я хочу сбросить эти массивы после того, как я запустил событие. Когда я это делаю, прослушиватель событий не получает данные.
Как это?
Работает:
// Assume each array filled with alot of data
let collected_data: collected_data = {
battery_data: [],
sensor_data: [],
time_data: []
}
sensorData.emit("data", collected_data);
Не работает:
let collected_data: collected_data = {
battery_data: [],
sensor_data: [],
time_data: []
}
sensorData.emit("data", collected_data);
collected_data.battery_data = [];
collected_data.sensor_data= [];
collected_data.time_data= [];
Комментарии:
1. где находится слушатель?
Ответ №1:
Попробуйте использовать этот синтаксис:
let collected_data = {
battery_data: [],
sensor_data: [],
time_data: []
}
Комментарии:
1. Я использую typescript.
2. Итак? Это допустимый машинописный текст
Ответ №2:
Ваша проблема связана с координацией событий, насколько я понимаю, вы хотите, чтобы событие после отправки вы хотели очистить свои массивы. emit
then
Я бы посоветовал вам добавить еще одно событие для очистки данных (например clean_data
), и когда получатель получает ваши данные, он отправляет это событие, и у вас есть слушатель, который прослушивает это событие, чтобы соответствующим образом очистить ваши данные, затем начните структурировать свой код на основе событий и рассмотрите все возможные сценарии, прежде чем полностью доверятькод, поскольку может быть сложнее согласовать некоторые пути кода.
Комментарии:
1. Я предполагаю
sensorData.emit("data", collected_data);
, что это синхронно. Я не понимаю, почему слушатель не получает данные, даже если событие с данными запускается до того, как я очищу массивы. —collected_data
не является глобальной переменной