Возвращение ответа от asyn c вызова в функции - PullRequest
0 голосов
/ 30 апреля 2020

Я знаю, что здесь уже был дан ответ ( Как мне вернуть ответ от асинхронного вызова? ), но я не смог найти ничего, что работало бы с тем, что мне нужно.

У меня есть базовая c функция чтения данных из базы данных, которая затем должна возвращать значение в зависимости от данных. Вот как это выглядит:

function checkcooldown(name, user){
    //gets the row from the sqlite database (returns a promise)
    sql.get(`SELECT * FROM usercooldowns WHERE user = "${user}" AND name = "${name}"`).then((row) => {
        if(!row || row == undefined){return 0} //if the user doesn't have a cooldown, return 0
        else if(row.time <= getcurdate()){//if the cooldown is already over, return 0
            return 0
        }
        else{//if a cooldown exists, return the number of seconds it lasts (currently dummy number)
            return 123
        }
    })
}

Я хочу вызвать эту функцию в операторе if, подобном этому

if(await checkcooldown(name, user) > 0){//do something}
else{//add a new cooldown}

Это, конечно, не работает, так как функция возвращает undefined.

Однако ни одно из решений, которые я нашел в приведенной выше теме, не помогло мне в этом, все они в конечном итоге использовали многострочные функции или выполняли обещания. Есть ли ЛЮБОЙ способ сделать его достаточно компактным, чтобы соответствовать простому выражению if, как я описал выше?

Спасибо за помощь ^^

1 Ответ

0 голосов
/ 30 апреля 2020

Почему бы просто не использовать синтаксис async await, если вы хотите быть кратким?

    async function checkcooldown(name, user) {
         try {

         const row = await sql.get(`SELECT * FROM usercooldowns WHERE user = "${user}" AND name = "${name}"`)

         } catch(err) {
          console.log(err)
         }
        if(row.time <= getcurdate()) {
          return 0
         } else {
          return 123
         }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...