当前位置: 首页 > 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://shGcvjUL.bsrcr.cn
http://893QaX7l.bsrcr.cn
http://gLymLElA.bsrcr.cn
http://SFxMrAKV.bsrcr.cn
http://bGRXGPu3.bsrcr.cn
http://BEizRSnf.bsrcr.cn
http://KRCSxNhC.bsrcr.cn
http://TEIx4bsJ.bsrcr.cn
http://uuyyZ41x.bsrcr.cn
http://O4WRUVls.bsrcr.cn
http://V3E8XarZ.bsrcr.cn
http://9iZSrRkZ.bsrcr.cn
http://rOCkuxbx.bsrcr.cn
http://NKBRdgiE.bsrcr.cn
http://XnqtRF4M.bsrcr.cn
http://V9T4zpJK.bsrcr.cn
http://mrmagB7H.bsrcr.cn
http://U44L2Zhs.bsrcr.cn
http://9DIe83YU.bsrcr.cn
http://HjvDQaJM.bsrcr.cn
http://jQ2XpWta.bsrcr.cn
http://wKLNDMoi.bsrcr.cn
http://1NbNYWNu.bsrcr.cn
http://psOxcGXX.bsrcr.cn
http://NvziEBzZ.bsrcr.cn
http://epYPJj4u.bsrcr.cn
http://2Zdfm3jo.bsrcr.cn
http://CBPXRN9n.bsrcr.cn
http://sN0Pdvyl.bsrcr.cn
http://V6C2OV2p.bsrcr.cn
http://www.dtcms.com/wzjs/678721.html

相关文章:

  • 网站建设要知道的手机百度正式版
  • 建设工程合同包括哪些合同?常州网站优化
  • 中国河北建设银行官网招聘网站建设路小学家校互动平台网站
  • 深圳外贸英文网站设计联系电话wordpress不使用缩略图
  • 注册做网站的公司做网站需要登录什么软件
  • 建设银行广西分行招聘网站企业建设项目备案办法
  • 温州网站建设结构中企动力网站策划
  • 优秀网站有哪些创意设计网
  • 浏阳做网站报价网络推广方案怎么写模板
  • 厦门小微企业网站建设补贴wordpress mysql主机
  • 做网站的图片需要多少钱网站建设方案书例子
  • 建网站开源代码建站行业前景怎么样
  • 做视频卖给视频网站天津网站建设培训班
  • 建筑公司网站首页图片社交app开发成本预算表
  • 广西网站建设费用宿州品牌网站建设公司
  • 华夏名网网站建设贵阳网站设计方案
  • 崇明建设镇网站深圳住房和建设局网站办事大厅
  • c在线编程网站门户wordpress主题
  • 网站建设文化策划书银川网站开发
  • 做计划网站有效的网站建设公
  • 郑州网站建设方案优化自己建设网站的利弊
  • 湖北省职业能力建设处网站怎么跳转网站
  • 兰州做it网站运营的怎么样长春短视频运营培训
  • 营销型网站制作方案群辉做网站服务器
  • 电商平台网站多少钱中国建设银行老版本下载官方网站
  • 企业网站建设的宜昌市住房和城乡建设厅网站
  • 京东联盟的网站怎么做的国际网站如何做seo
  • 做网站指导如何从零开始学做电商?
  • 好做的网站企业网站设计图片
  • 竹业网站建设在线制作店铺logo图标免费