Optimize anki note field generation (#611)

This commit is contained in:
toasted-nutbread 2020-06-21 15:54:34 -04:00 committed by GitHub
parent 9e6153f172
commit 0c69e54fde
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 17 additions and 6 deletions

View File

@ -28,8 +28,9 @@ class AnkiNoteBuilder {
const modeOptions = isKanji ? options.anki.kanji : options.anki.terms;
const modeOptionsFieldEntries = Object.entries(modeOptions.fields);
const fields = {};
const note = {
fields: {},
fields,
tags,
deckName: modeOptions.deck,
modelName: modeOptions.model,
@ -38,8 +39,17 @@ class AnkiNoteBuilder {
}
};
for (const [fieldName, fieldValue] of modeOptionsFieldEntries) {
note.fields[fieldName] = await this.formatField(fieldValue, definition, mode, context, options, templates, null);
const formattedFieldValuePromises = [];
for (const [, fieldValue] of modeOptionsFieldEntries) {
const formattedFieldValuePromise = this.formatField(fieldValue, definition, mode, context, options, templates, null);
formattedFieldValuePromises.push(formattedFieldValuePromise);
}
const formattedFieldValues = await Promise.all(formattedFieldValuePromises);
for (let i = 0, ii = modeOptionsFieldEntries.length; i < ii; ++i) {
const fieldName = modeOptionsFieldEntries[i][0];
const formattedFieldValue = formattedFieldValues[i];
fields[fieldName] = formattedFieldValue;
}
return note;

View File

@ -579,13 +579,14 @@ class Backend {
const states = [];
try {
const notes = [];
const notePromises = [];
for (const definition of definitions) {
for (const mode of modes) {
const note = await this.ankiNoteBuilder.createNote(definition, mode, context, options, templates);
notes.push(note);
const notePromise = this.ankiNoteBuilder.createNote(definition, mode, context, options, templates);
notePromises.push(notePromise);
}
}
const notes = await Promise.all(notePromises);
const cannotAdd = [];
const results = await this.anki.canAddNotes(notes);