SerialPort: close() 方法
注意:此功能在 专用 Web Workers 中可用。
SerialPort.close() 方法是 SerialPort 接口的一部分,它返回一个 Promise,该 Promise 在端口关闭时解析。
语法
js
close()
参数
无。
返回值
描述
close() 方法会关闭串口,前提是之前被锁定的 SerialPort.readable 和 SerialPort.writable 成员已被解锁,即已为各自的 reader 和 writer 调用了 releaseLock() 方法。
然而,当使用循环从串口设备持续读取数据时,相关的 可读流 始终会被锁定,直到 reader 遇到错误。在这种情况下,调用 reader.cancel() 将强制 reader.read() 立即以 { value: undefined, done: true } 解析,从而允许循环调用 reader.releaseLock()。
js
// Without transform streams.
let keepReading = true;
let reader;
async function readUntilClosed() {
while (port.readable && keepReading) {
reader = port.readable.getReader();
try {
while (true) {
const { value, done } = await reader.read();
if (done) {
// reader.cancel() has been called.
break;
}
// value is a Uint8Array.
console.log(value);
}
} catch (error) {
// Handle error...
} finally {
// Allow the serial port to be closed later.
reader.releaseLock();
}
}
await port.close();
}
const closedPromise = readUntilClosed();
document.querySelector("button").addEventListener("click", async () => {
// User clicked a button to close the serial port.
keepReading = false;
// Force reader.read() to resolve immediately and subsequently
// call reader.releaseLock() in the loop example above.
reader.cancel();
await closedPromise;
});
规范
| 规范 |
|---|
| Web Serial API # dom-serialport-close |
浏览器兼容性
加载中…