Microsoft Edge中来自Stream的新响应

Eri*_*rik 35 javascript response stream microsoft-edge

有人知道从Microsoft Edge中的ReadableStream创建新响应的方法吗?

对于Chrome,这非常简单.您可以在第一个参数ReadableStream的构造函数中获取并传递它Response.例如,您可以Response通过网络响应创建一个带有另一个状态代码的新代码,而无需复制响应:

fetch('https://www.baqend.com/')
  .then(res => new Response(res.body, { status: 222 }))
  .then(it => it.text())
  .then(it => console.log('Text prefix ' + it.substr(0,16)))
  .catch(it => console.log('error: ' + it))
Run Code Online (Sandbox Code Playgroud)

虽然这在Chrome中完美运行,但Edge不支持构造函数的ReadableStream输入Response.我在Edge中使用它的唯一方法是首先获得文本响应(有效地复制响应并阻止流):

fetch('https://www.baqend.com/')
  .then(it => it.text())
  .then(text => new Response(text, { status: 222 }))
  .then(it => it.text())
  .then(it => console.log('Text prefix ' + it.substr(0,16)))
  .catch(it => console.log('error: ' + it))
Run Code Online (Sandbox Code Playgroud)

有没有人知道从Edge中的可读流创建新响应的方法?

PS:我正在使用Microsoft Edge 42.17115.1.0(最新的开发人员预览版,因为我正在测试Service Workers)

PPS:第一代码不工作在Firefox或者是因为Firefox不支持获取RedableStreamResponse.body.边确实暴露Response.body了.

Eug*_*lin 1

尝试这个:

https://www.npmjs.com/package/web-streams-polyfill

var streams = require("web-streams-polyfill");
var readable = new streams.ReadableStream;

// Or, in ES6

import { ReadableStream } from "web-streams-polyfill";
Run Code Online (Sandbox Code Playgroud)