如何解决如何在异步函数中实现Promise的结果?
async function query(sql) {
p(`sql: ${sql}`)
let rows = await pool.query(sql) // Notice the *await* here
let r2 = rows.then( r => {
debug(`nRows=${r.rows.length}`)
return r.rows
})
.catch( err => {
throw `Query [${sql}] Failed: ${err}`
})
return rows
}
但是rows
实际上返回Promise
-而不是实际结果。这对我来说没有任何意义:那么 等待在其中实际实现了什么 ?然后-该函数如何计算并返回结果?
解决方法
async-await
只是javascript承诺中的语法糖。
因此,使用await就足够了,您不必再次等待then块中的结果
async function query(sql) {
try {
let rows = await pool.query(sql) // Notice the *await* here
// your logic to manipulate rows
return rows;
} catch (err) {
throw `Query [${sql}] failed: ${err}`
}
})
return rows
}
,
try catch是处理异步等待功能的好主意。这是一个示例,其承诺函数将在3秒后解决,希望对您有所帮助。
function pool(sql) {
return new Promise(resolve => {
setTimeout(() => {
resolve('resolved');
},3000);
});
}
async function query(sql) {
try {
console.log('calling . . .')
let rows = await pool(sql);
if(rows) {
console.log(rows)
return rows;
}
throw new Error('Request failed!');
} catch(error) {
console.log(error);
}
};
query('sql');
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。