使用ReadableStream作为请求主体获取

时间:2016-12-02 19:48:58

标签: stream fetch fetch-api whatwg-streams-api

我正在尝试将fetchReadableStream一起使用。在这个例子中,ReadableStream应该无限期地重复“Some data ...”。

fetch('/', {
  method: 'POST', 
  body: new ReadableStream({
    pull: function(controller) {
      console.log('pull called!');
      controller.enqueue('Some data...');
    }
  })
});

这不起作用。虽然pull执行一次,但请求正文中不会发送任何数据。

POST / HTTP/1.1
Host: example.com
Connection: keep-alive
Content-Length: 0
Origin: https://example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36
Accept: */*
Referer: https://example.com/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.8

如何使用fetch可读的ReadableStream(或任何我可以编写动态数据的流)?

或者,如果还不行,请说明一下吗?谢谢。

注意:这是一个更具体的衍生问题:Method for streaming data from browser to server via HTTP

1 个答案:

答案 0 :(得分:7)

我们正在努力完成这项工作,请参阅https://github.com/whatwg/fetch/pull/425了解PR获取标准。一旦完成,你可以期待它进入浏览器(慢慢地)。