当前位置: 首页 > 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://www.dtcms.com/wzjs/492942.html

相关文章:

  • 代做设计网站百度推广培训班
  • 哪个网站可以做公务员真题宁波seo网络推广咨询热线
  • 网站建设和空间goole官网
  • 网站优化工具分析工具seo推广策略
  • 网站建设 利润seo网站分析
  • 官方网站建设的意义杭州百度整站优化服务
  • 惠州网站开发公司无锡谷歌优化
  • 用vue做网站市场营销策划包括哪些内容
  • 宠物网站怎么做营销网站的建造步骤
  • 山东平度疫情成都网站优化及推广
  • 世界互联网公司排名大冶seo网站优化排名推荐
  • 合肥高新城建设计院网站推荐6个免费国外自媒体平台
  • 集团定制网站建设公司快速优化seo
  • 网站上传根目录自媒体平台注册下载
  • 重庆好的网站建设域名申请的流程
  • 定制制作网站价格表百度竞价排名事件分析
  • 网站建设启动资金预算百度销售系统
  • 为什么网站开发成本高信息发布平台推广
  • 绵阳网站建设制作百度搜索网址
  • 网站怎么做视频的软件网店运营公司
  • 做公司网站要注意哪些问题新产品的推广销售方法
  • 淘宝哪家做网站靠谱seo公司重庆
  • 绛帐做网站ciliba最佳磁力搜索引擎
  • 网站开发做前端还是后端营销策划的六个步骤
  • 流程图在线制作网站网络广告投放公司
  • 网站上的qq如何做悬浮排名优化百度
  • 达州做网站做销售找客户渠道
  • 简述建设政府门户网站的原因公司网站设计制作
  • 网站怎么公安部备案百度热度指数排行
  • 购物网站页面上海网络推广