如何在Microsoft Edge中创建ReadableStream?

问题描述 投票:0回答:2

MDNcaniuse.com和Microsoft Edge自己的"Platform Status"页面声明Microsoft Edge支持ReadableStream自内部版本号16299+(发布于09/26/2017)。

但是,当我尝试在最新的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也行不通。

我究竟做错了什么?

javascript microsoft-edge web-standards
2个回答
0
投票

根据ReadableSream doc example,我在Edge 44上重现了这个问题,但它在Edge 42上运行良好。所以,我认为这个问题与Edge 44有关,作为一种解决方法我建议你可以尝试将Edge版本降级到42版本。而且,我将尝试将此问题反馈给Edge Platform。


0
投票

您可以尝试使用以下代码来读取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;
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.