mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
check the words in batches, to avoid blocking the event loop
This commit is contained in:
parent
86416775fc
commit
876ea130b9
1 changed files with 12 additions and 5 deletions
|
@ -44,9 +44,10 @@ class ASpellRunner
|
||||||
if new Date() - start > ASpell.ASPELL_TIMEOUT
|
if new Date() - start > ASpell.ASPELL_TIMEOUT
|
||||||
@close(true)
|
@close(true)
|
||||||
else if i < words.length
|
else if i < words.length
|
||||||
word = words[i]
|
# batch up the words to check for efficiency
|
||||||
@sendWord(word)
|
batch = words.slice(i, i + ASpell.ASPELL_BATCH_SIZE)
|
||||||
i++
|
@sendWords(batch)
|
||||||
|
i += ASpell.ASPELL_BATCH_SIZE
|
||||||
setTimeout tick, 0
|
setTimeout tick, 0
|
||||||
else
|
else
|
||||||
@close()
|
@close()
|
||||||
|
@ -80,6 +81,13 @@ class ASpellRunner
|
||||||
sendWord: (word) ->
|
sendWord: (word) ->
|
||||||
@sendCommand("^" + word)
|
@sendCommand("^" + word)
|
||||||
|
|
||||||
|
sendWords: (words) ->
|
||||||
|
# Aspell accepts multiple words to check on the same line
|
||||||
|
# ^word1 word2 word3 ...
|
||||||
|
# See aspell.info, writing programs to use Aspell Through A Pipe
|
||||||
|
@sendCommand("^" + words.join(" "))
|
||||||
|
|
||||||
|
|
||||||
sendCommand: (command) ->
|
sendCommand: (command) ->
|
||||||
@aspell.stdin.write(command + "\n")
|
@aspell.stdin.write(command + "\n")
|
||||||
|
|
||||||
|
@ -96,5 +104,4 @@ module.exports = ASpell =
|
||||||
callback("process killed")
|
callback("process killed")
|
||||||
setTimeout forceClose, @ASPELL_TIMEOUT
|
setTimeout forceClose, @ASPELL_TIMEOUT
|
||||||
ASPELL_TIMEOUT : 4000
|
ASPELL_TIMEOUT : 4000
|
||||||
|
ASPELL_BATCH_SIZE : 100
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue