有人知道如何从Microsoft Edge中的Response创建新的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))
虽然这在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))
有没有人知道从Edge中的可读流创建新响应的方法?
PS:我正在使用Microsoft Edge 42.17115.1.0(最新的开发者预览版,因为我正在测试服务工作者)
PPS:第一个代码在firefox中不起作用,因为firefox不支持从RedableStream
获取Response.body
。 Edge确实会公开Response.body
。
答案 0 :(得分:0)
尝试一下:
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";