欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

前端使用fetch接收流式數(shù)據(jù)處理實例demo

 更新時間:2025年02月27日 08:27:17   作者:xiaoliyo_  
這篇文章主要介紹了前端使用fetch接收流式數(shù)據(jù)處理的相關資料,文中描述了一個流式數(shù)據(jù)處理的demo,需要后端服務配合進行接口調試,需要的朋友可以參考下

流式數(shù)據(jù)

流式數(shù)據(jù)是指以連續(xù)的方式產生和傳輸?shù)臄?shù)據(jù),這類數(shù)據(jù)通常在實時或接近實時的情況下進行處理

代碼部分

這是我測試用的demo,需要后端配合起來一個服務,進行接口調試,下面我把整個demo打包出來

 async getText() {
      const decoder = new TextDecoder("utf-8")
      try {
        const test = "1"
        const stream = await getAiText(test) // 獲取流
        const reader = stream.getReader() // 獲取流的讀取器

        // 讀取流數(shù)據(jù)的函數(shù)
        const read = async () => {
          const { done, value } = await reader.read() // 讀取下一個數(shù)據(jù)塊
          if (done) {
            console.log("Stream complete")
            return
          }
          const chunk = decoder.decode(value, { stream: true })
          console.log(chunk)//查看數(shù)據(jù)輸出
          setTimeout(() => {
            this.text += chunk // 更新 text
          }, 200)
          read() // 繼續(xù)讀取下一個數(shù)據(jù)塊
        }

        read() // 開始讀取流數(shù)據(jù)
      } catch (error) {
        console.error("Error fetching AI text:", error)
      }
    },

demo,壓縮包整不了,看代碼吧

//我這里做了個跨域,vite.config.js
// https://vitejs.dev/config/
export default defineConfig({
    plugins: [vue(),

    ],
    server: {
        host: "0.0.0.0",
        proxy: {
            '/stream3': {
                target: 'xxxxxxxxxxx', // 目標服務器地址
                changeOrigin: true, // 允許跨域
                rewrite: (path) => path.replace(/^\/api/, '') // 去掉請求路徑中的/api前綴
            },
        }
    },
})

//封裝導出請求方法
export const getAiText = async (text) => {
    const response = await fetch('/stream3', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
        },
        body: JSON.stringify({ test: text }),
    })
    return response.body // 返回 ReadableStream
}
//組件頁面引入
<template>
  <div class='HelloWorld_wrap'>
    <h1 @click="getText()">點擊</h1>
    {{text}}
  </div>
</template>
<script >
import { getAiText } from "../http/testAi"
import {
  defineComponent,
  ref,
  onMounted,
  onUpdated,
  toRefs,
  reactive,
} from "vue"
export default defineComponent({
  name: "HelloWorld",
  props: {},
  data() {
    return {
      text: "",
    }
  },
  methods: {
    async getText() {
      const decoder = new TextDecoder("utf-8")
      try {
        const test = "1"
        const stream = await getAiText(test) // 獲取流
        const reader = stream.getReader() // 獲取流的讀取器

        // 讀取流數(shù)據(jù)的函數(shù)
        const read = async () => {
          const { done, value } = await reader.read() // 讀取下一個數(shù)據(jù)塊
          if (done) {
            console.log("Stream complete")
            return
          }
          const chunk = decoder.decode(value, { stream: true })
          console.log(chunk)//查看數(shù)據(jù)輸出
          setTimeout(() => {
            this.text += chunk // 更新 text
          }, 200)
          read() // 繼續(xù)讀取下一個數(shù)據(jù)塊
        }

        read() // 開始讀取流數(shù)據(jù)
      } catch (error) {
        console.error("Error fetching AI text:", error)
      }
    },
  },
  mounted() { },
});
</script>
<style lang="scss" scoped>
</style>
//最后app.vue引入
<script setup>
import HelloWorld from './components/HelloWorld.vue'
</script>

<template>
  <HelloWorld />
</template>

總結 

到此這篇關于前端使用fetch接收流式數(shù)據(jù)處理的文章就介紹到這了,更多相關前端fetch接收流式數(shù)據(jù)內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 學習JSON.stringify的9大特性和轉換規(guī)則

    學習JSON.stringify的9大特性和轉換規(guī)則

    本文介紹JSON.stringify9大特性和轉換規(guī)則,JSON.stringify()方法將一個JavaScript對象或值轉換為?JSON?字符串,如果指定了一個replacer?函數(shù),則可以選擇性地替換值,或者指定的replacer是數(shù)組,則可選擇性地僅包含數(shù)組指定的屬性,更多內容需要的小火煸可以參考下面溫行內容
    2022-02-02
  • JavaScript實現(xiàn)Tab標簽頁切換的最簡便方式(4種)

    JavaScript實現(xiàn)Tab標簽頁切換的最簡便方式(4種)

    這篇文章主要介紹了JavaScript實現(xiàn)Tab標簽頁切換的最簡便方式(4種),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Javascript 不能釋放內存.

    Javascript 不能釋放內存.

    Javascript 不能釋放內存....
    2006-09-09
  • Bootstrap每天必學之進度條

    Bootstrap每天必學之進度條

    Bootstrap每天必學之進度條,對Bootstrap進度條小編也了解的很少,希望通過這篇文章和大家更多的去學習Bootstrap進度條,從中得到收獲。
    2015-11-11
  • js繪制一條直線并旋轉45度

    js繪制一條直線并旋轉45度

    這篇文章主要為大家詳細介紹了js繪制一條直線并旋轉45度,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • CSS常用網(wǎng)站布局實例

    CSS常用網(wǎng)站布局實例

    PS:這里列出的是常用的例子,而非研究之用,對一每個盒子,都沒有設置margin,padding,boeder等屬性!
    2008-04-04
  • layer插件實現(xiàn)在彈出層中彈出一警告提示并關閉彈出層的方法

    layer插件實現(xiàn)在彈出層中彈出一警告提示并關閉彈出層的方法

    今天小編就為大家分享一篇layer插件實現(xiàn)在彈出層中彈出一警告提示并關閉彈出層的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • js鼠標按鍵事件和鍵盤按鍵事件用法實例匯總

    js鼠標按鍵事件和鍵盤按鍵事件用法實例匯總

    這篇文章主要介紹了js鼠標按鍵事件和鍵盤按鍵事件用法,結合實例形式總結分析了JavaScript針對鼠標與鍵盤事件的常用操作技巧,需要的朋友可以參考下
    2016-10-10
  • JS實現(xiàn)CheckBox復選框全選全不選功能

    JS實現(xiàn)CheckBox復選框全選全不選功能

    在網(wǎng)站的管理后臺應用此功能居多,如一次性處理多個產品,或對文章的刪除對產品的下架等處理,一條一條的點顯然有一些麻煩,如果能每一行放一個checkbox,然后統(tǒng)一處理就好辦的多了,今天我就用簡單的篇幅來講解一下這個功能的實現(xiàn)原理和實現(xiàn)過程。
    2015-05-05
  • javascript實現(xiàn)點擊小圖顯示大圖

    javascript實現(xiàn)點擊小圖顯示大圖

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)點擊小圖顯示大圖,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11

最新評論