使用fetch流式获取响应数据

前言简介:

流式获取一般在用于数据量比较大的情况,一次性返回会导致前端页面加载时间过长或者请求超时等问题,这时候我们就可以考虑使用流式的方式拿到部分数据并先展示,从而提升用户体验。

我这里的场景是在对接chatGPT语言模型的时候采取的这种方案,因为目前的大语言的模型的结果都是需要一点点计算的,如果提出的问题比较复杂就导致响应的时间过长。

这里我们采用浏览器原生的fetchAP来实现

fetch('<请求地址>', {
	method: 'POST', // 请求方法
	headers: {
		"Content-Type": "application/json",  // 请求头
		Authorization: token // 校验令牌,根据自己的服务器需求传
	},
	body: JSON.stringify({  // 请求体
		prompt: [{role: 'user', content: data}],
		incremental: true
	})
}).then(async result => {
    const reader = result.body.getReader() // 创建读取器
	const textDecoder = new TextDecoder() // 创建解码器
	while(true){  // 循环读取内容
        /* 读取其中一部分内容 done 是否读取完成, value 读取到的内容 */
		const {done, value} = await reader.read() 
		if(done){
			return
		}
		const str = textDecoder.decode(value) // 利用解码器把数据解析成字符串
		console.log(str) // 这时候str就是服务器返回的内容
	}
})

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安陌乐轩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值