axios 是一个支持node端和欣赏器端的易用、简洁且高效的http库。本文主要介绍 axios 怎样实现 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);
- }
- }
复制代码 欢迎访问:天问博客
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |