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

南皮做网站网站开发 放大图片

南皮做网站,网站开发 放大图片,和wordpress类似,php在线购物网站建设引言: 最近在做的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/a/537211.html

相关文章:

  • 【开源负载测试工具Locust的并发测试优势】
  • 历史上的今天 网站如何做影视动画设计专业
  • 网站搭建需要多少钱?嵌入式培训班多少钱
  • JavaScript学习第八天:对象
  • 数据重构!按一级科目拆分序时账,批量生成明细账
  • 适合权重小的网站做的专题西宁市网站建设
  • 清远网站开发sohu电商网站 收费与免费
  • UE5关卡蓝图视图恢复方法
  • JS 自定义事件:从 CustomEvent 到 dispatchEvent!
  • gpt-5和gpt-5-codex到底用哪个好?
  • 如何查看网站的访问量静态网站开发试验报告
  • 【C基本功】类型转换的奇幻漂流
  • 南昌建设人才网站网站域名费用怎么做分录
  • 狄拉克函数与它的性质python函数表示
  • 山东省荣成市建设局网站开鲁网站seo站长工具
  • 海口 网站制作公司找家里做的工作到什么网站
  • Python全栈项目--基于计算机视觉的车牌识别系统
  • 制作空间主页网站学做网站初入门教程
  • 生命周期详解与实践
  • 【开题答辩过程】以《济南市济阳区智能蔬菜大棚管理系统》为例,不会开题答辩的可以进来看看
  • 比较好的网站开发团队有没有网站建设的教程
  • 基于昇腾支持的Llama模型性能测试:GitCode Notebook环境实践
  • 分频器介绍
  • wnmp搭建wordpress哪些网站seo做的好
  • [java] JVM 内存泄漏分析案例
  • Resource Hacker:强大的软件资源编辑器
  • 优化网站图片施工企业质量发展规划
  • 扁平化设计网站代码王者荣耀wordpress
  • 新能源汽车故障诊断与排除虚拟实训软件:赋能职业教育利器
  • 微硕WSD40190DN56G 40V N沟MOSFET:汽车48V电动尾翼“190A高速H桥核”