如何从另一个异步函数中的异步函数返回值?

时间:2020-03-12 04:31:22

标签: javascript node.js asynchronous promise

async getTagId(name) {
    try {
        await db.transaction(async trx => {
            let tagId;
            if (tagId = await db('tags').where('name', name).first()) {
                // return values here
            }
        });
    } catch (error) {
        logger.error('Error while creating records', error);
    }
}

我有一个像这样的函数,我想知道如何在异步函数中的异步函数中返回一个值。

我唯一能找到的方法就是在主函数中返回一个Primise对象,如下所示:

async getTagId(name) {
    return new Promise((resolve, reject) => {
        try {
            await db.transaction(async trx => {
                let tagId;
                if (tagId = await db('tags').where('name', name).first()) {
                    // resolve(tagId);
                }
            });
        } catch (error) {
            logger.error('Error while creating records', error);
        }
    });
}

通过这种方式,我可以resolve异步函数内的值。 但是由于异步函数默认情况下会返回Primise对象,因此我认为它没有太多美感或太怪异,因此我寻求帮助。

英语不是我的母语;请原谅我的任何错误。

0 个答案:

没有答案