如何从异步函数值?
我想从我的本地数据库中获取价值,但所有我能得到的是“无极{<待定>}”。这里是我的代码,我在互联网上找到。下面的代码应该返回包含表行的结果对象,但我只得到承诺。
const getFromDB = async() =>{
return await pool.query('SELECT * FROM services');
};
回答如下:
一个async
函数总是返回一个承诺。这一承诺的决心的那个值在你的函数代码返回。因此,要获得数值超出这一承诺的,您可以使用await
或.then()
;
getFromDB().then(val => {
// got value here
console.log(val);
}).catch(e => {
// error
console.log(e);
});
有在Javascript中没有免费的午餐。异步获得的值只能从一个函数异步(通过回调或承诺或其它类似的异步机制)返回。
或者,如果主叫方本身是一个异步函数,那么你可以使用await
:
async function someOtherFunc() {
try {
let val = await getFromDb();
console.log(val);
} catch(e) {
// error
console.log(e);
}
}
如何从异步函数值?
我想从我的本地数据库中获取价值,但所有我能得到的是“无极{<待定>}”。这里是我的代码,我在互联网上找到。下面的代码应该返回包含表行的结果对象,但我只得到承诺。
const getFromDB = async() =>{
return await pool.query('SELECT * FROM services');
};
回答如下:
一个async
函数总是返回一个承诺。这一承诺的决心的那个值在你的函数代码返回。因此,要获得数值超出这一承诺的,您可以使用await
或.then()
;
getFromDB().then(val => {
// got value here
console.log(val);
}).catch(e => {
// error
console.log(e);
});
有在Javascript中没有免费的午餐。异步获得的值只能从一个函数异步(通过回调或承诺或其它类似的异步机制)返回。
或者,如果主叫方本身是一个异步函数,那么你可以使用await
:
async function someOtherFunc() {
try {
let val = await getFromDb();
console.log(val);
} catch(e) {
// error
console.log(e);
}
}