Как я могу обработать асинхронную функцию в другой другой асинхронной функции?

Я использую Wordnet для создания словарных статей и помещаю их в свою базу данных. Вот вспомогательная функция, которая принимает слово и возвращает объект, который затем будет вставлен в базу данных.

var fs = require('fs');  // req for natural and wordnet-db
const natural = require('natural');
const wordnet = new natural.WordNet();

const generateWordEntry = word => {
   let wordObj = {};
   wordObj.definition = "";

   wordnet.lookup(word, function(entries) {
      entries.forEach((entry)=>{
         wordObj.word = word;
         wordObj.definition += entry.gloss.replace(/"/g, "'"  ).trim() + '***' ; 
      });
  });

  return wordObj;
}

Функция выше асинхронная (я думаю). Я хочу использовать эту вспомогательную функцию для генерации объекта wordObj, а затем добавить запись в мою базу данных:

function insertWordsToDeck(words) {
   let words2List = words.split('
').map(word=>word.trim());
   let generateEntries = words2List.map(word=>generateWordEntry(word));

   return db('words')
      .insert(generateEntries, 'id')
}

Я знаю, что вызов базы данных является асинхронным, но как мне включить другую функцию?

Всего 1 ответ


Начните с чтения об Обещаниях и async / await . Затем посмотрите документацию - https://github.com/morungos/wordnet , вы можете использовать специальные функции, которые возвращают обещания, поэтому ваш код будет выглядеть так:

const wordObj = await lookupAsync(word);
await insertWordsToDeck(wordObj);

Также полезно: Как переписать функцию обратного вызова в Promise


Есть идеи?

10000