axios/fetch实现stream流式请求示例详解

 更新时间:2023年09月20日 12:00:27   作者:天問  
这篇文章主要为大家介绍了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 流式请求的资料请关注脚本之家其它相关文章!

相关文章

  • 关于arguments,callee,caller等的测试

    关于arguments,callee,caller等的测试

    关于arguments,callee,caller等的测试...
    2006-12-12
  • 原生JS实现拖拽图片效果

    原生JS实现拖拽图片效果

    这篇文章主要为大家详细介绍了原生JS实现拖拽图片效果,JS实现图标图拖拽,拖拽的过程中不断输出该div的left、top值,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • 利用JS十分钟判断数组中存在元素的多种方式

    利用JS十分钟判断数组中存在元素的多种方式

    这篇文章主要给大家介绍了关于利用JS十分钟判断数组中存在元素的多种方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • JavaScript使用indexOf获得子字符串在字符串中位置的方法

    JavaScript使用indexOf获得子字符串在字符串中位置的方法

    这篇文章主要介绍了JavaScript使用indexOf获得子字符串在字符串中位置的方法,涉及javascript中indexOf方法操作字符串的技巧,需要的朋友可以参考下
    2015-04-04
  • 原生JS实现获取及修改CSS样式的方法

    原生JS实现获取及修改CSS样式的方法

    这篇文章主要介绍了原生JS实现获取及修改CSS样式的方法,结合实例形式简单分析了JavaScript针对页面元素属性动态操作相关实现技巧,需要的朋友可以参考下
    2018-09-09
  • JavaScript实现自己的DOM选择器原理及代码

    JavaScript实现自己的DOM选择器原理及代码

    实现自己的DOM选择器时匹配行为也应该和浏览原生匹配行为一致,接下来本文将详细介绍下实现思路及方法,感兴趣的你可以参考下或许对你巩固知识有所帮助
    2013-03-03
  • js实现屏幕自适应局部代码分享

    js实现屏幕自适应局部代码分享

    这篇文章主要介绍了js实现屏幕自适应局部代码分享,需要的朋友可以参考下
    2015-01-01
  • BootstrapValidator超详细教程(推荐)

    BootstrapValidator超详细教程(推荐)

    这篇文章主要介绍了BootstrapValidator超详细教程(推荐)的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • webpack打包非模块化js的方法

    webpack打包非模块化js的方法

    本文主要记录了非模块化js如何使用webpack打包,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • JS控制伪元素的方法汇总

    JS控制伪元素的方法汇总

    本文给大家介绍js控制伪元素的方法汇总,本文涉及到获取伪元素属性值的方法,本文介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-04-04

最新评论