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

时间:2019-05-01 12:42:58

标签: javascript node.js

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

我有以下代码-

// 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 个答案:

答案 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的方法。