/
index.md
83 lines (59 loc) · 3.12 KB
/
index.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
---
title: "ReadableStreamDefaultReader: ReadableStreamDefaultReader() コンストラクター"
short-title: ReadableStreamDefaultReader()
slug: Web/API/ReadableStreamDefaultReader/ReadableStreamDefaultReader
l10n:
sourceCommit: d41c5446d4ef257280fae9b78e2298ced8954a95
---
{{APIRef("Streams")}}
**`ReadableStreamDefaultReader()`** コンストラクターは、`ReadableStreamDefaultReader` オブジェクトのインスタンスを作成して返します。
> **メモ:** 通常、このコンストラクターを手動で使用することはありません。 代わりに、{{domxref("ReadableStream.getReader()")}} メソッドを使用してください。
## 構文
```js-nolint
new ReadableStreamDefaultReader(stream)
```
### 引数
- `stream`
- : 読み取り対象となる {{domxref("ReadableStream")}}。
### 返値
{{domxref("ReadableStreamDefaultReader")}} オブジェクトのインスタンス。
### 例外
- {{jsxref("TypeError")}}
- : 指定された `stream` 引数が {{domxref("ReadableStream")}} ではないか、別のリーダーによる読み取りのために既にロックされています。
## 例
次の簡単な例では、`getReader()` を使用して作成した {{domxref("ReadableStreamDefaultReader")}} を使用して、以前に作成したカスタムの `ReadableStream` を読み取ります(完全なコードについては、[単純なランダムストリームの例](https://mdn.github.io/dom-examples/streams/simple-random-stream/)を参照)。 各チャンクを順番に読み取り、ストリームの読み取りが完了するまで UI に出力します。 ストリームの読み取りが完了すると、再帰関数から戻り、ストリーム全体を UI の別の部分に出力します。
```js
function fetchStream() {
const reader = stream.getReader();
let charsReceived = 0;
// read() は、値を受け取ったときに解決する promise を返します
reader.read().then(function processText({ done, value }) {
// 結果オブジェクトには2つのプロパティが含まれます。
// done - ストリームがすべてのデータを既に提供している場合は true。
// value - 一部のデータ。 done が true の場合、常に undefined。
if (done) {
console.log("Stream complete");
para.textContent = result;
return;
}
// フェッチしたストリームの値は Uint8Array です
charsReceived += value.length;
const chunk = value;
let listItem = document.createElement("li");
listItem.textContent = `Received ${charsReceived} characters so far. Current chunk = ${chunk}`;
list2.appendChild(listItem);
result += chunk;
// さらに読み、この関数を再度呼び出します
return reader.read().then(processText);
});
}
```
## 仕様書
{{Specifications}}
## ブラウザーの互換性
{{Compat}}
## 関連情報
- [ストリーム API の概念](/ja/docs/Web/API/Streams_API)
- [読み取り可能なストリームの使用](/ja/docs/Web/API/Streams_API/Using_readable_streams)
- {{domxref("ReadableStream")}}
- {{domxref("ReadableStreamDefaultController")}}