在另一个函数中调用一个函数时,是否可以返回响应?
我有以下代码-
// Add Category
exports.saveCategory = async function(catData, callback){
try{
const images = await uploadImages(catData.files);
console.log(images); //nothing prints here
const save = await function(catData,images){
console.log('catdata');
return callback({status:200,message:'test'});
}
} catch (e) {
console.log(e);
}
}
function uploadImages(images) {
//some stuff
return images;
}
预期的输出:我想从 uploadImages 函数返回上传图像的名称,并将其传递给另一个函数以保存在数据库中。
答案 0 :(得分:4)
仅异步函数返回promise。使您的uploadImages函数异步
async function uploadImages(images) {
//some stuff
return images;
}
答案 1 :(得分:0)
Shubh Dixit的解决方案工作正常,但我必须纠正,异步函数不会不返回真正的Promise但异步函数对象。它们没有.catch()
或.finally()
方法。他是对的,异步函数对象内的返回将返回Promise.resolve()
async function x() {
return 2;
}
let value = await x();
返回值为2的已解决Promise。然后,等待将已解决的Promise的值返回到value
。但是,如果您尝试
let value = await x().catch((error)=> {console.log(error);});
您将收到一个错误,指出.catch()
不是x的方法。