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

  • 实现效果:
  • 需求:最近接到这么一个需求,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)
相关推荐
疯狂平头哥2 分钟前
微信小程序真机预览-数字不等宽如何解决
前端
Drift_Dream4 分钟前
前端趣味交互:如何精准判断鼠标从哪个方向进入元素?
前端
计算机毕设VX:Fegn08955 分钟前
计算机毕业设计|基于springboot + vue图书借阅管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
hqk6 分钟前
鸿蒙ArkUI:状态管理、应用结构、路由全解析
android·前端·harmonyos
嗷嗷哦润橘_7 分钟前
AI Agent学习:MetaGPT之我的工作
人工智能·学习·flask
PPIO派欧云9 分钟前
PPIO上线阿里Wan 2.6:制作电影级AI视频,对标Sora2
人工智能
米思特儿林16 分钟前
NuxtImage 配置上传目录配置
前端
火山kim23 分钟前
经典论文研读报告:DAGGER (Dataset Aggregation)
人工智能·深度学习·机器学习
JohnYan23 分钟前
Bun技术评估 - 22 Stream
javascript·后端·bun
Mr_chiu24 分钟前
AI加持的交互革新:手把手教你用Vue3打造智能模板输入框
前端