0

При передаче в setInterval переменной serialPortData console.log постоянно выдает пустой массив. Если напрямую в saveToDB вывести в консоль serialPortData то все ок. Не могу разобраться в чем дело.

// 'serialport.js'
import serialport from 'serialport';

export let serialPortData = [];

var sp = new SerialPort(port, {
  baudrate: 9600,
  parser: serialport.parsers.readline("\n")
});

sp.on('data', onData);

function onData (d) {
  data = JSON.parse(d);
}

// 'main.js'

import {serialPortData} from './serialport'

const saveToDB = (data) => () => {
  console.log(data); // всегда []
  console.log(serialPortData); // выводит нужный объект
};

setInterval(saveToDB(serialPortData), 20000);
  • Начнем с того что приведенный вами код синтаксически некорректен, а именно у вас неверный синтаксис стрелочной функции. – Утка Учится Укрываться Aug 07 '17 at 13:25
  • @УткаУчитсяУму, почему неверный? А, вижу, что была пропущена стрелка :-) – Grundy Aug 07 '17 at 13:46
  • У тебя параметр data перекрывает глобальную переменную data - стоит подумать над именами – Grundy Aug 07 '17 at 13:46
  • Да действительно опечатка при оформлении. – Evgenij Aug 07 '17 at 13:47
  • Даже если переименовать экспортируемую переменную то все равно ничего не меняется. Если обращаться напрямую к serialPortData то все норм, если передавать как параметр то постоянно пустой массив – Evgenij Aug 07 '17 at 17:17

0 Answers0