stream.addAbortSignal(signal, stream)
-
signal
<AbortSignal> 代表可能取消的信号¥
signal
<AbortSignal> A signal representing possible cancellation -
stream
<Stream> 附加信号的流¥
stream
<Stream> a stream to attach a signal to
将 AbortSignal 附加到可读或可写流。这允许代码使用 AbortController
控制流销毁。
¥Attaches an AbortSignal to a readable or writeable stream. This lets code
control stream destruction using an AbortController
.
在与传递的 AbortSignal
对应的 AbortController
上调用 abort
的行为与在流上调用 .destroy(new AbortError())
的行为相同。
¥Calling abort
on the AbortController
corresponding to the passed
AbortSignal
will behave the same way as calling .destroy(new AbortError())
on the stream.
const fs = require('node:fs');
const controller = new AbortController();
const read = addAbortSignal(
controller.signal,
fs.createReadStream(('object.json'))
);
// Later, abort the operation closing the stream
controller.abort();
或者使用带有可读流的 AbortSignal
作为异步可迭代对象:
¥Or using an AbortSignal
with a readable stream as an async iterable:
const controller = new AbortController();
setTimeout(() => controller.abort(), 10_000); // set a timeout
const stream = addAbortSignal(
controller.signal,
fs.createReadStream(('object.json'))
);
(async () => {
try {
for await (const chunk of stream) {
await process(chunk);
}
} catch (e) {
if (e.name === 'AbortError') {
// The operation was cancelled
} else {
throw e;
}
}
})();