You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

jQuery Terminal输入动画后提示符(>)不显示的问题

执行eth_atr_d9命令后提示符“>”不显示的问题解决

问题现象

  • 执行eth_atr_d9命令时,echo文本能正常打印,但命令提示符“>”消失;不过仍可输入其他命令且功能完全正常
  • 仅该命令存在此问题,其余6个命令均正常
  • 本地环境及codepen.io均能复现该问题
  • 尝试修改文本长度,问题依旧

相关代码

eth_atr_d9: function() {
    this.echo('Entering... ', { typing: true, delay: 10 });
    this.echo('Text1', { typing: true, delay: 30 });
    this.echo('Text2', { typing: true, delay: 30 });
}

问题原因

核心问题在于echo的打字机效果(typing: true)是异步执行的,命令执行完毕后,提示符的渲染逻辑没有等待所有异步echo操作完成,导致提示符被后续的打字机输出覆盖,或者没有触发重新渲染。

解决方案

方案一:利用回调函数等待所有输出完成后触发提示符

eth_atr_d9: function() {
    const self = this;
    this.echo('Entering... ', { typing: true, delay: 10 }, () => {
        self.echo('Text1', { typing: true, delay: 30 }, () => {
            self.echo('Text2', { typing: true, delay: 30 }, () => {
                self.prompt(); // 手动调用提示符渲染方法
            });
        });
    });
}

方案二:用Promise+async/await统一处理异步输出

eth_atr_d9: async function() {
    // 封装echo为Promise,等待打字机效果完成
    const echoWithTyping = (text, opts) => {
        return new Promise(resolve => {
            this.echo(text, { ...opts, callback: resolve });
        });
    };

    await echoWithTyping('Entering... ', { typing: true, delay: 10 });
    await echoWithTyping('Text1', { typing: true, delay: 30 });
    await echoWithTyping('Text2', { typing: true, delay: 30 });
    this.prompt(); // 所有输出完成后渲染提示符
}

这两种方法都是确保所有打字机效果的输出完成后,再手动触发提示符的渲染,彻底解决异步操作导致的提示符丢失问题。

内容的提问来源于stack exchange,提问作者Bhavy Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 09:25:16