Нет данных при испускании узлов событий

#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 не является глобальной переменной