ReadableByteStreamController:error() 方法

可用性有限

此特性不是基线特性,因为它在一些最广泛使用的浏览器中不起作用。

注意:此功能在 Web Workers 中可用。

error() 方法是 ReadableByteStreamController 接口的一部分,它会导致与关联流的未来交互因指定的错误原因而失败。

这通常由底层源调用,以暴露其获取数据的接口(如文件读取或套接字错误)中的错误。它也可以从其他地方调用以触发流错误,例如,如果流依赖的其他系统部分失败。

语法

js
error(errorObject)

参数

errorObject

任何您希望未来交互失败的对象。

返回值

无(undefined)。

异常

TypeError

如果源对象不是 ReadableByteStreamController,或者由于其他原因流不可读,则会抛出此错误。

示例

使用可读字节流 > 创建可读套接字推送字节流 中的示例展示了当流依赖的其他系统部分失败时,您可能如何使用 error() 手动触发流错误。

具体来说,底层源的 start() 方法会调用 readRepeatedly() 来执行所有设置操作并请求数据。这将返回一个 Promise。如果在读取数据时抛出任何错误,它们将被链式的 catch() 函数捕获。在 catch() 中,我们然后调用控制器上的 error(),并将底层源的错误原因传递过去。

js
function start(controller) {
  readRepeatedly().catch((e) => controller.error(e));
}

function readRepeatedly() {
  return socket.select2().then(() => {
    // …
  });
}

规范

规范
Streams
# ref-for-rbs-controller-error①

浏览器兼容性

另见