串行通信NodeJS后如何return值

How to return value after serial communication NodeJS

我是 JS 和异步方面的新手...所以我需要帮助 :) 我需要 return 串行通信后的值。阅读串行显然需要功能,所以我不知道如何让它阻塞,或者从它 return 值...控制台日志显示值,但值不是 returned...(可能因为它在串行之前执行)。请帮忙。这是部分代码:

var LightController = {
 getBrightness: function() { //get brightness
    port.write(askcommand);
    port.on('data', function (data) {
       st = data.slice(-4, -3);
       this.brightness = st.readInt8(0);
       console.log(this.brightness)
    });
    return this.brightness;
  },    

lightAccessory
      .getService(Service.Lightbulb)
      .addCharacteristic(Characteristic.Brightness)
      .on('get', function(callback) {
        callback(null, LightController.getBrightness());
      });
var LightController = {
 // add callback to get brightness function
 getBrightness: function(brightnessCallback) { //get brightness
    port.write(askcommand);
    port.on('data', function (data) {
       st = data.slice(-4, -3);
       this.brightness = st.readInt8(0);
       console.log(this.brightness)
       // call callback for get brightness function
       brightnessCallback(this.brightness);
    });
    return this.brightness;
  }
}

lightAccessory
      .getService(Service.Lightbulb)
      .addCharacteristic(Characteristic.Brightness)
      .on('get', function(callback) {
          // call the get brightness function, passing anonymous function as brightness callback
          LightController.getBrightness(function(brightness){
            // call original callback with brightness
            callback(null, brightness);
          })
      });