Signatur
Beschreibung
ReadableByteStreamController übernimmt bei Byte-Strömen die Rolle, die ReadableStreamDefaultController bei normalen Strömen hat. Sie erzeugen ihn nie selbst. Der Browser legt ihn automatisch an, sobald Sie new ReadableStream({ type: "bytes", ... }) aufrufen, und übergibt ihn an die Methoden start(controller) und pull(controller) Ihrer zugrunde liegenden Quelle.
Der wichtigste Vorteil von Byte-Strömen ist das Lesen ohne Kopieren mit einem ReadableStreamBYOBReader („bring your own buffer“, also „eigenen Puffer mitbringen“). Der Leser stellt einen eigenen Puffer bereit, und die Quelle schreibt über controller.byobRequest direkt hinein. Das lohnt sich bei großen Binärdaten, etwa beim Zerlegen von Dateiformaten, bei Netzwerkprotokollen oder beim Arbeiten mit dem Speicher von WebAssembly.
Mitglieder des Interfaces:
byobRequest(nur lesbar): die aktuelleReadableStreamBYOBRequestodernull. Sie füllenbyobRequest.viewund rufen danachrespond(bytesWritten)auf. Alternativ übergeben Sie mitrespondWithNewView(view)eine neue Ansicht auf denselben Puffer.desiredSize(nur lesbar): Anzahl der Bytes, die noch in die interne Warteschlange passen, bevor der Gegendruck greift. Der Wert istnullnach einem Fehler und0nach dem Schließen. Er kann auch negativ sein.enqueue(chunk): reiht eineArrayBufferView(typisiertes Array oderDataView) ein. Dabei wird der zugehörige Puffer übertragen, das heißt, er ist danach für die Quelle nicht mehr nutzbar.close(): schließt den Strom. Daten, die bereits in der Warteschlange liegen, können noch gelesen werden.error(reason): versetzt den Strom in den Fehlerzustand. Alle Daten in der Warteschlange werden verworfen.
Wenn Sie in den Quelloptionen autoAllocateChunkSize setzen, legt der Strom auch für normale Leser (getReader() ohne mode) automatisch einen Puffer an. Dann ist byobRequest in pull() immer vorhanden, und die Quelle braucht nur einen einzigen Codepfad.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $chunk Pflicht | ArrayBufferView | Parameter von enqueue(chunk): die Bytes, die eingereiht werden sollen, z. B. ein Uint8Array. Der Puffer darf nicht leer oder abgetrennt (detached) sein. |
|
| $e | any | undefined | Parameter von error(e): der Fehlergrund, mit dem Lesevorgänge abgelehnt werden. Üblich ist ein Error-Objekt. |
Rückgabewert
enqueue(), close() und error() geben undefined zurück. byobRequest liefert ReadableStreamBYOBRequest | null, desiredSize liefert number | null.