Javascript | Node.js - 无法在回调中设置全局变量

时间:2016-03-04 01:16:54

标签: javascript node.js asynchronous callback

所以我得到了这段代码来获得正确的COM名称:

//serialport lib import
var serialport = require("serialport");

//global var
var prt;

serialport.list(function (err, ports) {
  ports.forEach(function (port) {
    //this does NOT work.
        prt = port.comName);
      });
    });

console.log(prt); //outputs UNDEFINED

问题是无论我在哪里尝试将prt设置为.list()范围内的某个值。它没有设置变量。

但我可以调用全局函数。这对我来说真的没有任何意义。

//serialport lib import
var serialport = require("serialport");

//global var
var prt;

//global function
var printPort = function(port){
  console.log(port);
}

serialport.list(function (err, ports) {
  ports.forEach(function (port) {
    //this does NOT work.
    prt = port.comName);
    //and this DOES
    printPort(port.comName); //outputs "COMx"
  });
});

我现在认为这是与范围相关的问题。我对此很陌生,并对这种行为感到很困惑。事实上,我可以调用全局函数,但我无法设置全局变量对我没有任何意义。

另一个问题是如何使用RETURNS端口名称来创建一个函数。由于它是异步的,我无法归还。

非常感谢。

0 个答案:

没有答案