Node JS - 如何从嵌套函数中返回响应?

3

在一个函数中调用另一个函数时,是否可能返回响应?

我有以下代码 -

// 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 函数返回已上传图像的名称,并将其传递给另一个函数以保存到数据库中。
2个回答

4

只有异步函数才会返回Promise。将你的uploadImages函数改为异步函数。

async function uploadImages(images) {
        //some stuff
        return images;
    }

0
Shubh Dixit的解决方案很好,但我必须纠正一点,即异步函数不会返回真正的Promise,而是异步函数对象。这些对象没有.catch().finally()方法。他是正确的,异步函数对象内部的返回将返回一个Promise.resolve()
async function x() {
    return 2;
}
let value = await x();

返回一个已解决的 Promise,其值为 2。然后 await 将已解决的 Promise 的值返回给 value。但是如果您尝试

let value = await x().catch((error)=> {console.log(error);});

你会收到一个错误,提示.catch()不是x的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接