Как я могу обработать функцию asyn c в другой другой функции asy c? - PullRequest
1 голос
/ 24 марта 2020

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

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;
}

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

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

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

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

1 Ответ

1 голос
/ 24 марта 2020

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

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

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

...