当前位置: 首页 > wzjs >正文

企业网站设计概念成都旅游学院

企业网站设计概念,成都旅游学院,什么是网页布局,云定制网站引言: 最近在做的ai项目,产品提了一个需求,要求如果ai正在输出内容,用户再次提交了prompt,终止当前的请求,去发送新的请求 代码示例 封装请求 export const getAiMessage ({ message, session_id, callback, signal }) > {fetch(${baseURL}/api/question/ask, {method:…

引言:

最近在做的ai项目,产品提了一个需求,要求如果ai正在输出内容,用户再次提交了prompt,终止当前的请求,去发送新的请求

代码示例

封装请求

export const getAiMessage = ({ message, session_id, callback, signal }) => {fetch(`${baseURL}/api/question/ask`, {method: "POST",headers: {"Content-Type": "application/json",Authorization: sessionStorage.getItem("token") || "",},body: JSON.stringify({ message, session_id: session_id || "" }),signal: signal,}).then(async (response) => {// 请求成功if (response.ok) {const reader = response.body.getReader();const decoder = new TextDecoder("utf-8");while (true) {try {const { value, done } = await reader.read();if (done) {break;}const chunkValue = decoder.decode(value).split("\n\n");for (const item of chunkValue) {if (item.startsWith("data:")) {const itemData = JSON.parse(item.replace("data:", " ").trim());callback(itemData);}}} catch (e) {if (e.name === "AbortError") {console.log("请求已取消", e);return;}console.log("数据流读取出错", e);}}console.log("响应结束");}}).catch((e) => {if (e.name === "AbortError") {console.log("请求已取消", e);} else {console.log("请求出错", e);}});
};

页面使用 

handleSend(e) {if (e) {e.preventDefault();}if (!this.userPrompt || this.isMessageLoading) {return;}if (this.streamController) {this.streamController.abort();}this.isMessageLoading = true;this.aiMessageList.push({role: "user",content: this.userPrompt,});this.changeMessageScroll();const aiMessageIndex = this.aiMessageList.length;this.aiMessageList[aiMessageIndex] = {role: "assistant",content: "",};this.streamController = new AbortController();const obj = {message: this.userPrompt,session_id: this.session_id,callback: (res) => {this.isMessageLoading = false;this.result += res.text;this.session_id = res.session_id;const converter = new showdown.Converter();this.aiMessageList[aiMessageIndex] = {role: "assistant",content: converter.makeHtml(this.result),};this.changeMessageScroll();},signal: this.streamController.signal,};this.userPrompt = "";this.result = "";getAiMessage(obj);},

代码详解

我们主要通过创建AbortController对象,将AbortController中的signal传递给fetch,然后通过调用AbortController的abort方法去取消请求,主要代码如下

 

如果想取消请求,在想取消请求的代码逻辑处 调用abort方法就好

错误处理 

成功取消请求后会被 catch 捕获。注意 ! ! ! !,如果使用的是流式请求,一定要在每次处理接收到的流数据时进行错误处理,并在捕获到错误时使用 return 退出当前方法。否则,请求会继续进行,并且错误信息会不断打印,导致页面卡死。因为我们取消请求,也只是抛出了一个请求取消的报错信息,具体的代码逻辑需要我们自己处理。

 


文章转载自:

http://nrfDF1B5.xjnjb.cn
http://LCWzcU0s.xjnjb.cn
http://pVXLfi12.xjnjb.cn
http://kNYSxhNT.xjnjb.cn
http://90U0qdBn.xjnjb.cn
http://piMkDI1I.xjnjb.cn
http://sbfluR6G.xjnjb.cn
http://f5nHCgV0.xjnjb.cn
http://Ru4C0oQX.xjnjb.cn
http://PyNp6F2L.xjnjb.cn
http://sfAHpwo0.xjnjb.cn
http://5MXUFWpM.xjnjb.cn
http://IekgiJ1c.xjnjb.cn
http://zNnW6myV.xjnjb.cn
http://ZOynbT1w.xjnjb.cn
http://p5WyFdVg.xjnjb.cn
http://hERTHakg.xjnjb.cn
http://JSR3FA05.xjnjb.cn
http://QcMQrTzO.xjnjb.cn
http://P0klmvmh.xjnjb.cn
http://7kv93tJ0.xjnjb.cn
http://NV6wgRyf.xjnjb.cn
http://6OR2iErf.xjnjb.cn
http://20lHbHsq.xjnjb.cn
http://RnRSVlAJ.xjnjb.cn
http://oadDYney.xjnjb.cn
http://ypRjGsQR.xjnjb.cn
http://7tjQT3Eo.xjnjb.cn
http://mK7d6tU6.xjnjb.cn
http://CjVK3ik5.xjnjb.cn
http://www.dtcms.com/wzjs/672064.html

相关文章:

  • 网站推广的工具网站开发 渠道
  • thinkphp 网站模板西安直播网站开发
  • 建设文库网站网站建设费会计处理
  • 无法解析您网站的域名.外贸网站商城
  • 哪些网站做问卷可以赚钱电商网站做互联网金融
  • 网站降权恢复中国经济总量
  • wap卖料建站系统wordpress连接memcached
  • 图片生成链接的网站企业微网站案例
  • 泰安聊城网站建设建站工具cms
  • 做论文常用网站做公司网站要走哪些流程
  • 郑州建设网站黔西南州做网站
  • golang做网站建筑规范app
  • 服装网站模板seo运营是什么意思
  • 门户网站的运营公众号 创意名字
  • 网站建设实施步骤宝塔搭建app教程
  • 中国做类似 esty的网站管理类培训课程
  • 手机网站前端如何建网站赚取佣金
  • 啥十小企业网站建设网上买吃的网站做代理
  • 网站制作的相关术语有哪些企业网站的页面特点
  • 西安网站到首页排名站长工具流量统计
  • wordpress分类文章置顶上海seo顾问推推蛙
  • 临沂营销型网站建设视频网站是怎么做权限管理的
  • 城乡建设吧部网站东莞高端网站建设
  • 做网站先做前台还是后台wordpress实现h5翻页效果
  • 网站建设与网页设计案例教程 重庆大学出版社wordpress头像不同步
  • 做影视网站用主机还是用服务器设计本笔记本推荐
  • 什么网站教人做3d效果图如何修改网站后台
  • 住房和城乡建设部网站公告北京建设银行官方网站
  • 什邡网站建设想做电商怎么注册
  • 太仓做企业网站用本机做网站浏览