如果我需要稍后定义它,我该如何使用函数?
How do i use function if i need to define it later?
因此,我正在使用 node.js、express 和串行端口。我需要做的是让用户选择监听的串行端口,使用 AJAX 请求对其进行初始化,并希望从串行端口获取一些数据。
但是我实际上无法在代码中间的某处初始化 SerialPort 对象,因为它开始下雨并出现 "is not defined" 错误。所以,我的代码应该是这样的:
//some definitions here...
app.post('/submitPort', (req, res) => {
tty = new SerialPort(req.body.portpath)
})
tty.on('data', () => {...})
等等。即使我试图在代码的前面声明 tty,在 submitPort 之前,它也会抛出一堆关于它未定义的错误。
我理解这个逻辑——我之前没有初始化那个对象,那么,我该怎么做呢?但这也没有用,我的意思是,我试着这样做:
let tty = new SerialPort()
//some logic
app.post('/submitPort', (req, res) => {
tty = new SerialPort(req.body.portpath)
})
所以,我现在迷路了。我 真的 需要将网络和串行绑定在一起,但是,它很难粘合。我应该怎么做才能让它发挥作用?
你可以这样做。
let tty = undefined;
// Your business logic...
app.post('/submit-port', (req, res) => {
tty = new SerialPort(req.body.portpath);
tty.on('data', () => { /* TODO: implement the handler */ });
});
您可以考虑将端点作为您的 tty 客户端的 "initializer"。现在您确定您的实例在使用前已初始化。
你需要lazy init
和singleton
,那么可以使用这个解决方案。
const tty;
//some definitions here...
app.post('/submitPort', (req, res) => {
if(!tty){
initTTY(req.body.portpath)
} // not define init
res.send("DONE")
})
function initTTY(port) {
tty = new SerialPort(port)
tty.on('data', () => {
// Do something here
})
tty.on('error', () => {
tty = null; // so that can initialized
})
}
因此,我正在使用 node.js、express 和串行端口。我需要做的是让用户选择监听的串行端口,使用 AJAX 请求对其进行初始化,并希望从串行端口获取一些数据。 但是我实际上无法在代码中间的某处初始化 SerialPort 对象,因为它开始下雨并出现 "is not defined" 错误。所以,我的代码应该是这样的:
//some definitions here...
app.post('/submitPort', (req, res) => {
tty = new SerialPort(req.body.portpath)
})
tty.on('data', () => {...})
等等。即使我试图在代码的前面声明 tty,在 submitPort 之前,它也会抛出一堆关于它未定义的错误。 我理解这个逻辑——我之前没有初始化那个对象,那么,我该怎么做呢?但这也没有用,我的意思是,我试着这样做:
let tty = new SerialPort()
//some logic
app.post('/submitPort', (req, res) => {
tty = new SerialPort(req.body.portpath)
})
所以,我现在迷路了。我 真的 需要将网络和串行绑定在一起,但是,它很难粘合。我应该怎么做才能让它发挥作用?
你可以这样做。
let tty = undefined;
// Your business logic...
app.post('/submit-port', (req, res) => {
tty = new SerialPort(req.body.portpath);
tty.on('data', () => { /* TODO: implement the handler */ });
});
您可以考虑将端点作为您的 tty 客户端的 "initializer"。现在您确定您的实例在使用前已初始化。
你需要lazy init
和singleton
,那么可以使用这个解决方案。
const tty;
//some definitions here...
app.post('/submitPort', (req, res) => {
if(!tty){
initTTY(req.body.portpath)
} // not define init
res.send("DONE")
})
function initTTY(port) {
tty = new SerialPort(port)
tty.on('data', () => {
// Do something here
})
tty.on('error', () => {
tty = null; // so that can initialized
})
}