Ожидание функции, но по-прежнему нет результатов - PullRequest
0 голосов
/ 13 октября 2018

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

let weeks = {};

async function getWeeks() {
    await sql.open('./weeks.db');
    sql.get(`SELECT * FROM weeks WHERE id = "1"`).then(row => {
        weeks.firstWeek = row.week;
    }).catch(console.error);
    sql.get(`SELECT * FROM weeks WHERE id = "2"`).then(row => {
        weeks.secondWeek = row.week;
    }).catch(console.error);
    sql.close();
}

await getWeeks().then(async function() {
    makeEdits();
});

async function makeEdits() {
    message.channel.send(new Discord.RichEmbed().setTitle(`Which week do you want?`).setDescription(`? for **${weeks.firstWeek}**.\n? for **${weeks.secondWeek}**.`)).then(async function(message) {
        // Both values are undefined here however I can use them deeper down into the function

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

1 Ответ

0 голосов
/ 13 октября 2018

Вы также должны await sql.get звонки, и вы можете реорганизовать ваши .then с до await с, чтобы улучшить удобочитаемость:

 async function getWeeks() {
   const weeks = {}; // local scope helps to prevent racing errors

   await sql.open('./weeks.db');

   try {
     const row = await sql.get(`SELECT * FROM weeks WHERE id = "1"`);
     weeks.firstWeek = row.week;
   } catch(error) { console.error(error); }

   try {
     const row = await sql.get(`SELECT * FROM weeks WHERE id = "2"`);  
     weeks.secondWeek = row.week;
   } catch(error) { console.error(error); }

   sql.close();

   return weeks;
}

function makeEdits(weeks) { /*...*/ }

makeEdits(await getWeeks());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...