在使用回调的自定义事件处理设置中,回调的调用上下文显示回调参数的有效值,但在单步执行函数后未定义参数值。
如果有关系,这是在使用React的电子渲染器进程内部。
在普通JavaScript对象中,调试器显示回调报告SerialPortEvent.Opened
行中所有内容的预期上下文值。
// file: serialPort.js (no imports)
class SerialPortEvent {
Discovered = 0
Opened = 1
Closed = 2
DataReceived = 3
Error = 4
}
class SerialPortSpec {
...
addEventListener(listener) {
this.listeners.push(listener)
}
open(baudRate) {
const baudRateInt = parseInt(baudRate, 10)
window.serialport.open(this.portInfo.path, baudRateInt)
.then(binding => {
this.baudRate = baudRateInt
this.binding = binding
// Here, the debugger shows all locals are as expected
this.listeners.forEach(listener => listener(SerialPortEvent.Opened))
}).catch(reason => {
this.listeners.forEach(listener => listener(SerialPortEvent.Error, reason))
})
}
...
}
...
module.exports = { SerialPortEventHub, SerialPortSpec, SerialPortEvent }
然而,一个“步入”之后,在回调函数“portEventHandler”的开头,参数值是undefined
。我很想知道为什么!谢谢。
// file SerialPortUI.jsx
import React from 'react'
import { SerialPortEventHub, SerialPortEvent, SerialPortSpec } from './serialPort'
import './serialportui.css'
class SerialPortPanel extends React.Component {
...
portEventHandler(eventType, ...data) {
// Here, eventType is undefined. This file does import SerialPortEvent.
switch (eventType) {
...
}
}
...
}
1条答案
按热度按时间ffx8fchx1#
这不是一个正确的枚举声明,类字段将在示例上创建,你在代码中访问的静态类属性
SerialPortEvent.Opened
实际上是undefined
,这就是被调用函数接收的值。相反,您需要使用具有属性的对象:
如果你从来没有示例化过
class
语法,就不要使用它(使用new
)!