← Cloudflare Workers / workers / runtime-apis / streams
WritableStream DefaultWriter
Контекст
Writer используется, когда нужно писать напрямую в WritableStream, а не передавая в него данные по конвейеру из ReadableStream. Например:
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.desiredSizeint- Размер, необходимый для заполнения внутренней очереди потока, в виде целого числа. Всегда возвращает 1, 0 (если поток закрыт) или
null(если в потоке есть ошибки).
- Размер, необходимый для заполнения внутренней очереди потока, в виде целого числа. Всегда возвращает 1, 0 (если поток закрыт) или
-
writer.closedPromise<void>- Promise, который показывает, закрыт ли writer. Он выполняется, когда поток writer закрывается, и отклоняется, если в потоке возникает ошибка.
Методы
-
abort(reasonstringoptional): Promise<void>- Прерывает поток. Этот метод возвращает промис, который выполняется с ответом
undefined.reasonпредставляет собой необязательную строку в удобочитаемом формате, указывающую причину отмены.reasonбудет передан алгоритму прерывания базового приёмника (sink). Если этот записываемый поток является одной из сторон TransformStream, тогда его алгоритм прерывания переводит читаемую сторону transform в состояние ошибки сreason.
- Прерывает поток. Этот метод возвращает промис, который выполняется с ответом
-
close(): Promise<void>- Пытается закрыть writer. Оставшиеся операции записи завершаются до того, как writer закрывается. Этот метод возвращает промис, который выполняется со значением
undefinedесли writer успешно закрывается и обрабатывает оставшиеся записи, либо отклоняется при любой ошибке.
- Пытается закрыть writer. Оставшиеся операции записи завершаются до того, как writer закрывается. Этот метод возвращает промис, который выполняется со значением
-
releaseLock(): void- Снимает блокировку писателя (writer) с потока. После снятия блокировки писатель больше не активен. Этот метод можно вызвать до завершения всех незавершённых
write(chunk)вызовы обрабатываются. Это позволяет поставить в очередьwriteоперацию, снять блокировку и начать передачу данных в поток записи из другого источника, как показано в примере ниже.
- Снимает блокировку писателя (writer) с потока. После снятия блокировки писатель больше не активен. Этот метод можно вызвать до завершения всех незавершённых
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>- Записывает фрагмент данных в writer и возвращает Promise, который разрешается в случае успешного выполнения операции.
- Базовый поток может принимать меньше типов данных, чем
any, он выбросит исключение при обнаружении неожиданного типа.