需求:实现一个类似打印的效果(文字一个字一个字的输出)

  • 实现效果:
  • 需求:最近接到这么一个需求,ai机器人回复的问题,后端是通过websocket每隔一段事件返回数据,前端拿到数据后直接渲染,现在需要做到一个效果,后端返回的结果前端需要一个一个文字的输出
  • 解决方法:通过setTimeout和递归的方法实现,代码也不难,小编封装的一个函数,方便使用,详细说明在如下代码中
  • 源码:
javascript 复制代码
// 全局下
timer = null
wordIndex = 0
/*
    打印文字
    参数1:dom对象
    参数2:需要打印的字符串
    参数3:延时时长
*/
writing(dom, wordString, delay) {
    // wordIndex标记文字索引值,
    if (wordIndex < wordString.length) { // 如果索引值比文字长度小,继续执行代码
        clearTimeout(timer) // 为了保证每次时间间隔一致,需要清楚时间器
        // 向dom中追加文字,之后索引值+1
        dom.innerText += wordString[wordIndex++]
        // 定时器
        timer = setTimeout(() => {
            // 递归执行该函数
            this.writing(dom, wordString, delay)
        }, delay)
    }
},

// 调用方法
writing('dom标签', '文字字符串', 20)
相关推荐
西西学代码1 分钟前
Flutter---DragTarget(颜色拖拽选择器)
前端·javascript·flutter
小光学长1 分钟前
基于Vue的地铁综合服务管理系统7949eg04(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
前端·数据库·vue.js
nihao5619 分钟前
Figma-Context-MCP 帮助前端快速生成页面
前端·ai编程·figma
门框研究员10 分钟前
AI基础设施的临界点:算力、资本与政策的三重博弈
人工智能
罗西的思考29 分钟前
【Agent】 ACE(Agentic Context Engineering)源码阅读笔记 ---(2)--- 训练
人工智能
阿蓝灬34 分钟前
React中的stopPropagation和preventDefault
前端·javascript·react.js
天天向上102436 分钟前
vue3 抽取el-dialog子组件
前端·javascript·vue.js
AKAMAI37 分钟前
AI推理硬件选型指南:CPU 与 GPU 的抉择
人工智能·云原生·云计算
wechat_Neal37 分钟前
智能网联汽车 HD map架构解析
人工智能·程序人生·敏捷开发
大大dxy大大40 分钟前
机器学习-KNN算法示例
人工智能·算法·机器学习