当前位置: 代码网 > it编程>编程语言>Javascript > 前端根据后端返回的文本流逐个展示文本内容代码示例

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

2025年02月13日 Javascript 我要评论
前端根据后端返回的文本流逐个展示文本内容1、前端调用方法async function fetchstream(url, data, onsuccess, close, error) { const

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

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;
    }
  );
};

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

总结

到此这篇关于前端根据后端返回的文本流逐个展示文本内容的文章就介绍到这了,更多相关根据后端文本流展示文本内容内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com