Skip to content

Commit 48a6a2b

Browse files
committed
控制打字机speed 非负值;修复初次插入控制台异常错误问题
1 parent afc8251 commit 48a6a2b

File tree

1 file changed

+24
-18
lines changed

1 file changed

+24
-18
lines changed

src/extensions/type-writer.ts

+24-18
Original file line numberDiff line numberDiff line change
@@ -97,23 +97,29 @@ export default Extension.create({
9797
typedChars: 0,
9898
}
9999
//插入内容
100-
const typeWriterInsertContent = (curContent: any) => {
101-
// editor.commands.insertContent(curContent)
102-
try {
103-
editor
104-
.chain()
105-
.insertContent(curContent)
106-
.focus('end', {
107-
scrollIntoView: true,
108-
})
109-
.run()
110-
} catch (e) {}
100+
const typeWriterInsertContent = async (curContent: any) => {
101+
await new Promise<void>((resolve) => {
102+
setTimeout(() => {
103+
try {
104+
editor
105+
.chain()
106+
.insertContent(curContent)
107+
.focus('end', {
108+
scrollIntoView: true,
109+
})
110+
.run()
111+
} catch (e) {}
112+
resolve()
113+
}, 0)
114+
})
111115
}
116+
// 取非负数
117+
const speed = Math.max(options?.speed ?? 1, 0)
112118
// 处理内容
113119
const processNode = async (node: any, isTopLevel = false) => {
114120
if (node.type === 'paragraph') {
115121
//当前为段落时 插入段落样式
116-
typeWriterInsertContent([
122+
await typeWriterInsertContent([
117123
{ type: 'paragraph', attrs: node.attrs },
118124
])
119125
// 处理段落内容
@@ -136,9 +142,9 @@ export default Extension.create({
136142
const endIndex = Math.min(i + step, text.length)
137143
const currentText = text.slice(i, endIndex)
138144
await new Promise<void>((resolve) => {
139-
typewriterTimer = setTimeout(() => {
145+
typewriterTimer = setTimeout(async () => {
140146
// 插入当前字符
141-
typeWriterInsertContent([
147+
await typeWriterInsertContent([
142148
{
143149
type: 'text',
144150
text: currentText,
@@ -162,17 +168,17 @@ export default Extension.create({
162168
}
163169

164170
resolve()
165-
}, options?.speed ?? 1)
171+
}, speed)
166172
})
167173
}
168174
} else if (node.type === 'table') {
169-
typeWriterInsertContent([node, { type: 'paragraph' }])
175+
await typeWriterInsertContent([node, { type: 'paragraph' }])
170176
editor.commands.enter()
171177
} else {
172178
if (isTopLevel) {
173-
typeWriterInsertContent([node, { type: 'paragraph' }])
179+
await typeWriterInsertContent([node, { type: 'paragraph' }])
174180
} else {
175-
typeWriterInsertContent([node])
181+
await typeWriterInsertContent([node])
176182
}
177183
}
178184
}

0 commit comments

Comments
 (0)