要实现实时逐字显示ai回复,必须启用grok api流式传输:确认api支持后,前端用fetch+readablestream接收data:格式响应,逐块解析delta.content并追加到dom,配合requestanimationframe控制打字节奏,同时容错处理非标准sse格式。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在前端页面调用Grok API并实时逐字显示AI回复,必须绕过常规HTTP响应机制,启用流式传输通道,否则所有文字会卡在缓冲区直到生成完成才一次性弹出。
确认Grok API支持流式调用
打开终端,执行以下命令(将YOUR_API_KEY替换为真实密钥):
curl "https://api.x.ai/v1/chat/completions?stream=true" -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" --no-buffer -d '{"model":"grok-beta","messages":[{"role":"user","content":"用三个词形容春天"}]}'
若返回内容以data:开头、每行一个JSON片段、末尾含data: [DONE],说明流式通道可用;【缺stream=true参数或未设--no-buffer,将退化为普通请求,打字机效果必然失败】
前端用fetch + ReadableStream实现流式接收
第一步:构造请求体,确保headers中包含Accept: text/event-stream且body中stream=true已置为true
第二步:调用fetch发起请求,传入{method: 'POST', headers, body},不可省略signal用于后续中断
第三步:获取response.body.getReader(),用while循环持续read(),每次解码chunk后按\n\n切分,过滤空行和data: [DONE]
第四步:对每个非空data:行,用JSON.parse提取delta.content字段,追加到DOM容器的textContent末尾
前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。前端设计与 UI/UX 全方位优化专家。覆盖视觉层次、排版系统、色彩理论、响应式布局、交互体验、动画动效、无障碍访问、性能优化八大维度,帮助开发者将普通页面升级为高品质产品级界面。
用requestAnimationFrame控制打字节奏
方法一:不依赖流式数据到达时机,纯前端模拟打字节奏
监听流式数据全部接收完毕后,将完整文本存入变量fullText,再用requestAnimationFrame逐字写入元素innerText,间隔设为40ms(约25字/秒)
方法二:直接在流式接收过程中插入节流逻辑
每次接收到新content后,不立即更新DOM,而是push进队列;启动一个独立的raf循环,每帧取队列首项拼接,避免高频重绘导致卡顿
这一步操作起来很简单,直接把文件拖进去就行。
处理Grok特有的流式格式陷阱
Grok返回的event流并非标准SSE,部分响应块可能缺失data:前缀,或混入空格/换行符;需在解析前统一trim()并正则匹配/^data:\s*(\{.*\})$/gm
遇到解析失败的chunk时,跳过该行继续下一行,【不要throw error或中断整个流,否则页面将永远卡在最后一段已成功解析的内容上】
若content字段为空字符串(即""),仍需追加,因Grok可能在token边界处拆分空格或标点,跳过会导致排版错乱
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!






