Что производительнее и экономнее, копия функции через bind или функция обертка

На сервере есть код вэбсокета вида:

wss.on('connect', function (ws, request) {
  const socketData = {
    login: 'krakazyabra'
  }
  
  ws.on('close', function () {
    // какой то код
    console.log(`Пользователь ${socketData.login} отключился`);
    // и еще код
  }
}

хочу вынести функцию закрытия соединения во вне, однако функция использует внешнюю переменную socketData.

Получаем следующий код функции закрытия соединения. Т.е. теперь в функцию надо передать переменную socketData

function closeConnect (socketData) {
  // какой то код
  console.log(`Пользователь ${socketData.login} отключился`);
  // и еще код
}

Вот 2 варианта, которые у меня получились, но оба не очень нравятся, возможно, есть И-й вариант?

Через .bind
wss.on('connect', function (ws, request) {
  const socketData = {
    login: 'krakazyabra'
  }
  
  ws.on('close', closeConnect.bind(null, socketData));
})
Через функцию обертку
wss.on('connect', function (ws, request) {
  const socketData = {
    login: 'krakazyabra'
  }
  
  ws.on('close', function () {
      closeConnect(socketData)
    });
})

Вопрос: Как более правильно и читаемо сделать с точки зрения производительности и экономии памяти, через .bind или фукнцию обертку?

На сколько я понимаю, bind будет для каждого соединения создавать новую функцию и держать ее в памяти. 100 пользователей, 100 копий фукнции. В то же время, фукнция обертка смотрится не очень.


Ответы (0 шт):