请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

没有实现 缓存输入的效果

环境: window11 node版本:v14.16.0
Sam老师您好,以下代码没有实现加载中 输入文本,结束后文本显示在控制台上,这个是啥原因 ?您给看下

import readline from 'node:readline' //因为 运行抛出了readline找不到所以引入了这行代码
import clispinners from 'cli-spinners'
import cliCursor from 'cli-cursor'
import { BufferListStream } from 'bl'

const spinners = clispinners.dots //组件库
const text = 'loading'
const stream = process.stderr //输出流
let frameIndex = 0 //当前帧
const frames = spinners.frames //每一帧的内容
const inteval = spinners.interval // 每一帧的间隔

const mutedStream = new BufferListStream()
mutedStream.pipe(process.stdout)
const rl = readline.createInterface({
  input: process.stdin,
  output: mutedStream,
})

function clear() {
  stream.cursorTo(0) //移动光标到顶部开始位置
  stream.clearLine(1) //清楚光标右边的text
}
function stop() {
  clearInterval(i)
  i = undefined
  clear()
  frameIndex = 0
  cliCursor.show(stream) //显示光标
  rl.close()
}
cliCursor.hide(stream) //隐藏光标
function render() {
  clear()
  const renderText = frames[frameIndex] + ' ' + text
  stream.write(renderText)
  frameIndex = ++frameIndex % frames.length
}

let i = setInterval(() => {
  render()
}, inteval)

setTimeout(() => {
  stop()
}, 3000)

图片描述

正在回答 回答被采纳积分+3

3回答

扬_灵 2022-12-02 11:22:00

同学你好,这边在window11 node14.17.6 中测试是可以正常打印的,你可以切换下版本或下载代码仓库中的源码试一下。https://img1.sycdn.imooc.com//szimg/63896f1f098abc0512400719.jpg

0 回复 有任何疑惑可以回复我~
qq_艾诺_ 2022-12-01 08:42:17

windows貌似不行,我的也不行。不要纠结这一点

0 回复 有任何疑惑可以回复我~
扬_灵 2022-11-30 08:43:56
同学你好,麻烦提供一下完整的测试项目代码,我在本地帮你测试定位一下问题。
0 回复 有任何疑惑可以回复我~
  • 提问者 慕粉202224771 #1
    你好, 这是完整的代码,可以直接粘就跑起来的.
    回复 有任何疑惑可以回复我~ 2022-12-01 09:25:38
  • 扬_灵 回复 提问者 慕粉202224771 #2
    同学你好,方便将操作效果截图发一下吗,这边好将问题提交给sam老师进行确认修复。
    回复 有任何疑惑可以回复我~ 2022-12-02 08:30:30
  • 提问者 慕粉202224771 回复 扬_灵 #3
    截图已发,就是加载完了之后 没有输出加载中输入的字符.
    回复 有任何疑惑可以回复我~ 2022-12-02 08:56:45
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信