javascript - 如何在 Microsoft Edge 中创建 ReadableStream?
问题描述
MDN、caniuse.com和 Microsoft Edge 自己的“平台状态”页面都表明 Microsoft Edge自内部版本号 16299+(发布于 2017 年 9 月 26 日)起支持。ReadableStream
但是,当我尝试在最新的 Edge(Microsoft Edge 44.17763.1.0、Microsoft EdgeHTML 18.17763)中创建 ReadableStream 时,出现错误Function expected
。
两个都
new ReadableStream()
和
new ReadableStream({
start: function(controller) {},
pull: function(controller) {},
cancel: function() {}
})
抛出Function expected
错误。省略new
也不起作用。
我究竟做错了什么?
解决方案
您可以尝试使用以下代码读取 Edge 中的数据:
function pump(reader, context) {
return reader.read().then(function (result) {
if (result.done) {
console.log('ReadableStreamReader: complete! Received ' + context.receivedLength);
} else {
var chunk = result.value;
console.log('ReadableStreamReader: Partial chunk, chunkSize = ' + chunk.byteLength);
context.receivedLength += chunk.byteLength;
return pump(reader, context);
}
}).catch(function (e) {
throw e;
});
}
function fetchVideo() {
var url = 'xxxxxxxx';
var headers = new Headers();
var param = {
method: 'GET',
headers: headers,
mode: 'cors',
cache: 'default'
};
var context = {
receivedLength: 0
};
fetch(url, param).then(function (res) {
console.log('Content-Length: ' + res.headers.get('Content-Length'));
return pump(res.body.getReader(), context);
}).catch(function (e) {
throw e;
});
}
推荐阅读
- java - 当 launchMode 为 singleTask 时,强制活动使用 startActivity 调用 onCreate()
- php - 在 laravel 中带有 post 操作的路由
- c# - 用于传输树结构的进程间通信
- markdown - Markdown:强制两个连续的单词在同一行
- python - Python 子进程在脚本中失败:AttributeError:“模块”对象没有属性“Popen”
- python - Scrapy 无法从 URL 下载图像
- java - java.io.NotSerializableException: org.apache.storm.spout.SpoutOutputCollector
- android - AmazFit Bip 手表 - 心率
- java - 为 aws lambda 中的代码生成 swagger 文件
- mysql - 在 MYSQL 中插入期间创建触发器显示错误