跳转到内容
搜索文档

WritableStream DefaultWriter

最后更新 查看 MarkdownAgent 设置

背景

当您想直接写入 WritableStream,而不是从 ReadableStream 管道传输数据时,需要使用 writer。例如:

function writeArrayToStream(array, writableStream) {
  const writer = writableStream.getWriter();
  array.forEach(chunk => writer.write(chunk).catch(() => {}));

  return writer.close();
}

writeArrayToStream([1, 2, 3, 4, 5], writableStream)
  .then(() => console.log('All done!'))
  .catch(e => console.error('Error with the stream: ' + e));

属性

  • writer.desiredSize int

    • 填充 stream 内部队列所需的大小,为整数。始终返回 1、0(如果 stream 已关闭)或 null(如果 stream 有错误)。
  • writer.closed Promise<void>

    • 表示 writer 是否已关闭的 promise。当 writer stream 关闭时 promise fulfilled,stream 出错时 rejected。

方法

  • abort(reasonstringoptional) : Promise<void>

    • 中止 stream。此方法返回一个 fulfilled 且响应为 undefined 的 promise。reason 是可选的人类可读字符串,表示取消原因。reason 将传递给底层 sink 的 abort 算法。如果此可写流是 TransformStream 的一侧,则其 abort 算法会导致 transform 的可读侧因 reason 而进入 errored 状态。
  • close() : Promise<void>

    • 尝试关闭 writer。在 writer 关闭之前,剩余的 write 操作会完成处理。如果 writer 成功关闭并处理剩余的 write,此方法返回 fulfilled 且值为 undefined 的 promise,或在任何错误时 rejected。
  • releaseLock() : void

    • 释放 writer 对 stream 的锁定。释放后,writer 不再处于活动状态。您可以在所有待处理的 write(chunk) 调用 resolve 之前调用此方法。这样您可以排队一个 write 操作、释放锁定,然后从另一个来源开始向可写流管道传输,如下例所示。
let writer = writable.getWriter();
// Write a preamble.
writer.write(new TextEncoder().encode('foo bar'));
// While that’s still writing, pipe the rest of the body from somewhere else.
writer.releaseLock();
await someResponse.body.pipeTo(writable);
  • write(chunkany) : Promise<void>

    • 将数据 chunk 写入 writer,并返回在操作成功时 resolve 的 promise。
    • 底层 stream 接受的类型可能少于 any,遇到意外类型时会抛出异常。

相关资源

这篇文档对您有帮助吗?