Skip to content

Commit 938ecd5

Browse files
committed
fix: loading embed files synchronously, fixed #525, fixed #527
1 parent 5523a2a commit 938ecd5

File tree

1 file changed

+31
-27
lines changed

1 file changed

+31
-27
lines changed

src/core/render/embed.js

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3,36 +3,40 @@ import {merge} from '../util/core'
33

44
const cached = {}
55

6-
function walkFetchEmbed({step = 0, embedTokens, compile, fetch}, cb) {
7-
const token = embedTokens[step]
6+
function walkFetchEmbed({embedTokens, compile, fetch}, cb) {
7+
let token
8+
let step = 0
9+
let count = 1
810

9-
if (!token) {
10-
return cb({})
11-
}
12-
13-
const next = text => {
14-
let embedToken
15-
if (text) {
16-
if (token.embed.type === 'markdown') {
17-
embedToken = compile.lexer(text)
18-
} else if (token.embed.type === 'code') {
19-
embedToken = compile.lexer(
20-
'```' +
21-
token.embed.lang +
22-
'\n' +
23-
text.replace(/`/g, '@DOCSIFY_QM@') +
24-
'\n```\n'
25-
)
11+
while ((token = embedTokens[step++])) {
12+
const next = (function (token) {
13+
return text => {
14+
let embedToken
15+
if (text) {
16+
if (token.embed.type === 'markdown') {
17+
embedToken = compile.lexer(text)
18+
} else if (token.embed.type === 'code') {
19+
embedToken = compile.lexer(
20+
'```' +
21+
token.embed.lang +
22+
'\n' +
23+
text.replace(/`/g, '@DOCSIFY_QM@') +
24+
'\n```\n'
25+
)
26+
}
27+
}
28+
cb({token, embedToken})
29+
if (++count >= step) {
30+
cb({})
31+
}
2632
}
27-
}
28-
cb({token, embedToken})
29-
walkFetchEmbed({step: ++step, compile, embedTokens, fetch}, cb)
30-
}
33+
})(token)
3134

32-
if (process.env.SSR) {
33-
fetch(token.embed.url).then(next)
34-
} else {
35-
get(token.embed.url).then(next)
35+
if (process.env.SSR) {
36+
fetch(token.embed.url).then(next)
37+
} else {
38+
get(token.embed.url).then(next)
39+
}
3640
}
3741
}
3842

0 commit comments

Comments
 (0)