Skip to content

Commit f4bd219

Browse files
committed
feat: 优化 getHumanTypingDelay 函数,使用 randomInRange 函数替代硬编码延迟值
1 parent d1180a6 commit f4bd219

1 file changed

Lines changed: 18 additions & 5 deletions

File tree

src/utils.ts

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,21 @@
1+
export function randomInRange(
2+
min: number,
3+
max: number,
4+
integer = false,
5+
): number {
6+
if (min > max) {
7+
[min, max] = [max, min]
8+
}
9+
10+
const value = Math.random() * (max - min) + min
11+
return integer ? Math.floor(value) : value
12+
}
13+
114
export function getHumanTypingDelay(index: number, text: string) {
215
const char = text[index]
316

4-
// ===== 1. 基础速度(约 90–150 ms)=====
5-
let delay = 90 + Math.random() * 60
17+
// ===== 1. 基础速度 =====
18+
let delay = randomInRange(16, 100)
619

720
// ===== 2. 索引相关:开头慢,中段快,结尾慢 =====
821
const progress = index / text.length
@@ -16,16 +29,16 @@ export function getHumanTypingDelay(index: number, text: string) {
1629

1730
// ===== 3. 字符类型权重 =====
1831
if (char === ' ') {
19-
delay += 40
32+
delay += 16
2033
}
2134

2235
if (/[,.!?;:]/.test(char)) {
23-
delay += 200 + Math.random() * 150
36+
delay += randomInRange(16, 50)
2437
}
2538

2639
// ===== 4. 小概率“走神”停顿 =====
2740
if (Math.random() < 0.03) {
28-
delay += 300 + Math.random() * 500
41+
delay += randomInRange(100, 200)
2942
}
3043

3144
// ===== 5. 下限保护 =====

0 commit comments

Comments
 (0)