> Fetch API 原生支持流式传输,可以通过 `Response` 对象的 `body` 属性获取到一个 `ReadableStream` 对象,从而实现流式传输。以下是一个使用` Fetch API `实现流式传输的示例: ```javascript fetch('http://example.com/streamingData') .then(function(response) { const reader = response.body.getReader(); return new ReadableStream({ start(controller) { function push() { reader.read().then(function(result) { if (result.done) { controller.close(); return; } controller.enqueue(result.value); push(); }).catch(function(error) { controller.error(error); }); } push(); } }); }) .then(function(stream) { const reader = stream.getReader(); return new Promise(function(resolve, reject) { let data = ''; function read() { reader.read().then(function(result) { if (result.done) { resolve(data); return; } data += result.value; read(); }).catch(reject); } read(); }); }) .then(function(data) { console.log('请求成功:', data); }) .catch(function(error) { console.log('请求失败:', error); }); ``` 在以上代码中,首先使用 `Fetch API` 发送一个请求,并通过 then() 方法获取到 `Response` 对象。接着,通过 `Response` 对象的 `body` 属性获取到一个 `ReadableStream` 对象,并使用 `start()` 方法创建一个新的 `ReadableStream`,同时在 `start()` 方法中使用 `getReader()` 方法获取到一个 `ReadableStreamDefaultReader `对象,并使用 `enqueue() `方法将读取到的数据推入到 `ReadableStream` 中。最后,使用 `getReader()` 方法获取到一个 `ReadableStreamDefaultReader `对象,并通过 `Promise` 对象将数据读取出来。 需要注意的是,在使用 `Fetch API` 实现流式传输时,需要使用 `Response` 对象的 `body` 属性获取到` ReadableStream` 对象,并使用 `start()` 方法创建一个新的 `ReadableStream`,同时需要使用 `getReader()` 方法获取到 `ReadableStreamDefaultReader` 对象,并使用 `enqueue()` 方法将读取到的数据推入到 `ReadableStream` 中。在读取数据时,需要使用 `getReader()` 方法获取到 `ReadableStreamDefaultReader` 对象,并使用 `read()` 方法读取数据,读取完成后需要继续调用 `read()` 方法来读取下一块数据,直到数据读取完成。