((ANSWERED)从函数中的异步调用返回响应

问题描述 投票:0回答:1

我知道这里已经回答了这个问题(How do I return the response from an asynchronous call?,但是我找不到能满足我需要的任何东西。

我有一个基本函数,它从数据库读取数据,然后应该根据数据返回一个值。它是这样的:

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}

这当然不起作用,因为函数返回未定义。

但是,我在以上线程中找到的所有解决方案都没有帮助我,它们最终都使用了多行函数或解决了Promise。是否有任何方法可以使其紧凑到足以容纳上述简单的if语句?

感谢您的帮助^^

javascript asynchronous
1个回答
0
投票

如果您想简洁,为什么不只使用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
         }
     }
© www.soinside.com 2019 - 2024. All rights reserved.