您的位置:首页 > 健康 > 养生 > b2b典型网站_青岛公司做网站的价格_如何进行网络推广_cpa广告联盟平台

b2b典型网站_青岛公司做网站的价格_如何进行网络推广_cpa广告联盟平台

2024/12/23 5:30:34 来源:https://blog.csdn.net/yangyanqin2545/article/details/143508667  浏览:    关键词:b2b典型网站_青岛公司做网站的价格_如何进行网络推广_cpa广告联盟平台
b2b典型网站_青岛公司做网站的价格_如何进行网络推广_cpa广告联盟平台

前端根据后端返回的文本流逐个展示文本内容

1、前端调用方法

async function fetchStream(url, data, onSuccess, close, error) {const response = await fetch(url, {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify(data)});if (!response.ok) {onSuccess(`服务响应失败,请稍后重试`);close();throw new Error(`HTTP error! status: ${response.status}`);}const reader = response.body.getReader();const decoder = new TextDecoder();let result = '';while (true) {const { done, value } = await reader.read();if (done) {break;}const decodedValue = decoder.decode(value, { stream: true });result += decodedValue;onSuccess && onSuccess(decodedValue); // 每次接收到数据时,调用onSuccess}close();return result;
}

2、使用

const onSend = () => {if (!questionText.value.trim()) {message('不能发送空消息', { type: 'warning' });return;}chatList.value.push({index: chatIndex.value + 1,type: 'user',content: questionView.value});chatList.value.push({index: chatIndex.value + 1,type: 'assistant',content: ''});const data = {question: questionView.value,modelId: props.modelId,sessionId: sessionId.value};let streamContent = '';const onStreamSuccess = (chunk) => {streamContent += chunk;chatList.value[chatList.value.length - 1].content = streamContent.replace(/\n+/g, ' ').replace(/ {2,}/g, ' ');scrollToBottom();};fetchStream('/ai/aiAgent/stream',data,onStreamSuccess,() => {sendloading.value = false;},() => {chatList.value[chatList.value.length - 1].content = '';sendloading.value = false;});
};

经过以上两步,即可实现文本流逐个显示在界面上。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com