创新实训(十四) 项目开发——用户终止对话功能bug修复

bug分析

创新实训(十三) 项目开发------实现用户终止对话功能

上面的实现在后面的测试中发现有问题,当前的问题被终止后,提问下一个问题,后端已经显示了回答,前端也可以在network界面看到流式的回答,但是UI界面就是没有输出。

重新回顾上述实现,发现mixchat接口在调用stopchat接口后,仍然收到后端的sse消息,导致上一个回答还未终止,下一个回答的message已经来到,而mixchat从未abort,进一步导致了接收到的message混乱。

根本原因是**:每一次用户的query其实都是使用的最初建立的sse连接**。

修改如下

首先对变量controller和siginal进行修改:

js 复制代码
let controller = ref(null);
controller.value = new AbortController();
const signal = ref(controller.value.signal);

使用ref可以动态的监听变化。

在onsend方法中,对于点击停止的按钮处理,在接口返回ok后,新建一个controller.value。

js 复制代码
//直接断掉上一次的sse连接
controller.value= new AbortController();
signal.value =controller.value.signal;

同时增加判断:

  • 如果用户选择点击停止,进入changewait方法
  • 否则就视为开启新的对话,将isUserAbort.value设为false
js 复制代码
if(button.value.type==='info'){

    button.value.status=true;
    changeWait();
    
    return ;
  }

  //如果用户再次点击发送,再在用户中断设为false
  else  isUserAbort.value===false;

终止的关键还是在controller.value.abort();

复制代码
    controller.value.abort(); //连接没有被完全断开欸
    signal.value=controller.value.signal;
    console.log(signal.value);

实现效果如下

  • 第一种情况:

    查看网络:调用stop后mix-chat直接被中断
  • 第二种情况:

    响应在只有docs时被终止:

  • 第三种情况

    mix-chat已经返回了部分回答后被终止

相关推荐
lpfasd1233 小时前
Win11笔记本睡眠唤醒致命bug:NUL设备丢失致Git等工具瘫痪
git·bug
隔窗听雨眠2 天前
Git二分法精准定位Bug
git·bug·git bisect
技术人生黄勇4 天前
GitNexus 把代码库变成知识图谱|审核 AI 产出更清晰,改 Bug 更精准
人工智能·bug
黑夜里的小夜莺4 天前
黑马点评登录成功后点击【我的】会跳转到登录页面 BUG 修复
java·bug
熟人看不到5 天前
解决Claude Code界面错位更新不及时-Windows
bug·vibecoding·claude code
深念Y5 天前
踩坑实录:把 Windows 默认 PowerShell 换成 7.x 到底有多坑?一条龙解决指南
windows·乱码·bug·控制台·powershell·管道·流式
油炸自行车5 天前
【Qt bug排查】Qt项目debug模式下,关闭可视化界面后,后台程序不退出,依然在打印log
bug
SoraShim5 天前
2026实测:深入理解Gemini 3 Pro镜像站链式思考提示工程,三步解决复杂Bug定位
bug
AI 编程助手GPT6 天前
GPT-5.6意外曝光、Claude安全检查全面公测、Grok 4.3搅局价格战——多模型混战的五月,开发者如何避坑?
人工智能·gpt·ai·chatgpt·bug·ai编程
Zxxxxxy_7 天前
测试入门:从 0 到 1 搞懂开发与 Bug
bug