Express JS use async function on requests

前端 未结 3 2076
花落未央
花落未央 2020-11-28 15:52
app.use(async function(req, res, next) {
    try {
        var myres = await new Promise((resolve, reject) => {
            mysql_connection.query(\"select * from         


        
3条回答
  •  时光说笑
    2020-11-28 16:31

    async..await is syntactic sugar for promises, and a promise is just a pattern that relies on callbacks. The use of async functions is acceptable wherever they are supported by the environment. async..await is supported since Node.js 7.6.0.

    async function always returns a promise. As long as this implicit return value doesn't cause problems, it's perfectly fine everywhere, including Express. It doesn't matter whether it's used for database queries or anything else.

    Unless API supports promises, errors should be entirely handled in async function. Function body should be wrapped with try..catch to rule out unhandled rejections which may result in exceptions in future Node versions.

    The original code contains no next calls and just suppresses an error. As a rule of thumb, async middleware should be structured like that:

    app.use(async function(req, res, next) {
        try {
            ...
            next();
        } catch (error) {
            next(error);
        }
    });
    

提交回复
热议问题