问题
I\'m trying to use fetch with a ReadableStream. In this example, the ReadableStream should simply repeat \"Some data...\" indefinitely.
fetch(\'/\', {
method: \'POST\',
body: new ReadableStream({
pull: function(controller) {
console.log(\'pull called!\');
controller.enqueue(\'Some data...\');
}
})
});
This doesn\'t work. While pull is executed once, no data is sent in the request body.
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
How can I make a ReadableStream (or any kind of stream where I can write dynamic data) usable with fetch?
Alternatively, if this isn\'t yet possible, could you please indicate this? Thank you.
Note: This is a more specific spin-off question from: Method for streaming data from browser to server via HTTP
回答1:
We're working on making this work, see https://github.com/whatwg/fetch/pull/425 for the PR to the Fetch Standard. Once that is done you can expect this to make its way into browsers (slowly).
来源:https://stackoverflow.com/questions/40939857/fetch-with-readablestream-as-request-body