在异步函数内部,从回调函数返回值返回Promise(undefined)

时间:2018-01-30 14:54:25

标签: javascript node.js callback promise async-await

我是异步编程的新手, 我面临类似于question的问题,在这个问题中建议的方法使用回调,但我尝试使用Promises和async-await函数来做。我在控制台中未定义。这是我的榜样。我错过了什么?

 //Defining the function
 async query( sql, args ) {
    const rows = this.connection.query( sql, args, async( err, rows ) => 
     { 
        if ( err )
           throw new Error(err); 
        return rows; 
      } );
}

//calling the function here 
 db.query("select 1")
 .then((row) => console.log("Rows",row)) // Rows undefined
 .catch((e) => console.log(e));

1 个答案:

答案 0 :(得分:4)

让您的query函数返回Promise

function query(sql, args) {
    return new Promise(function (resolve , reject) {
        this.connection.query(sql, args, (err, rows) => {
            if (err)
                reject(err);
            else
                resolve(rows)
        });
    });
}


//calling the function here 
query("select 1")
.then((row) => console.log("Rows",row)) // Rows undefined
.catch((e) => console.log(e));