axios/fetch实现stream流式请求示例详解
axios简介
axios 是一个支持node端和浏览器端的易用、简洁且高效的http库。本文主要介绍 axios / fetch 如何实现 stream 流式请求,注意这里需要区分 node 环境和浏览器环境。
node端
代码演示:
const axios = require('axios');
axios({
method: 'get',
url: 'http://tiven.cn/static/img/axios-stream-01-kcUzNdZO.jpg',
responseType: 'stream'
})
.then(response => {
response.data.on('data', (chunk) => {
// 处理流数据的逻辑
});
response.data.on('end', () => {
// 数据接收完成的逻辑
});
}); 浏览器端
在浏览器端,axios 是使用 XMLHttpRequest 对象来实现请求,设置 responseType: 'stream' 后会出现以下警告⚠️:
The provided value 'stream' is not a valid enum value of type XMLHttpRequestResponseType.
所以,在浏览器端,我们需要使用浏览器内置API fetch 来实现 stream 流式请求。
代码演示:
async function getStream() {
try {
let response = await fetch('/api/admin/common/testStream');
console.log(response);
if (!response.ok) {
throw new Error('Network response was not ok');
}
const reader = response.body.getReader();
const textDecoder = new TextDecoder();
let result = true;
let output = ''
while (result) {
const { done, value } = await reader.read();
if (done) {
console.log('Stream ended');
result = false;
break;
}
const chunkText = textDecoder.decode(value);
output += chunkText;
console.log('Received chunk:', chunkText);
}
} catch (e) {
console.log(e);
}
}以上就是axios / fetch 实现 stream 流式请求的详细内容,更多关于axios / fetch 实现 stream 流式请求的资料请关注脚本之家其它相关文章!
相关文章
js前端身份证号、手机号脱敏、手机号、身份证号加密处理(ios浏览器兼容性问题)
这篇文章主要给大家介绍了关于js前端身份证号、手机号脱敏、手机号、身份证号加密处理的相关资料,还介绍了ios浏览器兼容性问题,文中通过实例代码介绍的非常详细,需要的朋友可以参考下2022-11-11
JavaScript使用delete删除数组元素用法示例【数组长度不变】
这篇文章主要介绍了JavaScript使用delete删除数组元素用法,结合实例形式分析了delete删除数组元素的具体用法与注意事项,需要的朋友可以参考下2017-01-01
asp(javascript)全角半角转换代码 dbc2sbc
asp与javascript 全角半角处理代码2009-08-08
JS实现获取图片大小和预览的方法完整实例【兼容IE和其它浏览器】
这篇文章主要介绍了JS实现获取图片大小和预览的方法,结合完整实例形式分析了javascript针对不同浏览器处理图片上传与预览等操作的相关实现技巧,需要的朋友可以参考下2017-04-04


最新评论