Skip to content

Commit 318abe6

Browse files
authored
Merge pull request xtermjs#4145 from Tyriar/microtask_server
Optimize critical I/O path for input latency
2 parents eca9c72 + 0b81208 commit 318abe6

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

demo/server.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ function startServer() {
8686
return (data) => {
8787
s += data;
8888
if (!sender) {
89-
sender = setTimeout(() => {
89+
sender = queueMicrotask(() => {
9090
socket.send(s);
9191
s = '';
9292
sender = null;
@@ -103,7 +103,7 @@ function startServer() {
103103
buffer.push(data);
104104
length += data.length;
105105
if (!sender) {
106-
sender = setTimeout(() => {
106+
sender = queueMicrotask(() => {
107107
socket.send(Buffer.concat(buffer, length));
108108
buffer = [];
109109
sender = null;

src/common/input/WriteBuffer.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ export class WriteBuffer {
105105
// schedule chunk processing for next event loop run
106106
if (!this._writeBuffer.length) {
107107
this._bufferOffset = 0;
108-
setTimeout(() => this._innerWrite());
108+
queueMicrotask(() => this._innerWrite());
109109
}
110110

111111
this._pendingData += data.length;
@@ -217,7 +217,7 @@ export class WriteBuffer {
217217
this._callbacks = this._callbacks.slice(this._bufferOffset);
218218
this._bufferOffset = 0;
219219
}
220-
setTimeout(() => this._innerWrite());
220+
queueMicrotask(() => this._innerWrite());
221221
} else {
222222
this._writeBuffer.length = 0;
223223
this._callbacks.length = 0;

0 commit comments

Comments
 (0)