zoukankan      html  css  js  c++  java
  • nodejs 异步编程async/await

    参考:https://www.jianshu.com/p/2132904b9768

    在路由js中

    router.get('/', function(req, res, next) {
    res.render('index', { title: 'Express' });
    });
    router.post('/',async function (request,response) {
    var userName=request.body.userName;
    var password=request.body.password;
    var result=await login.panUser(userName,password);
    console.log("/routes/login / result");
    console.log(result);
    response.send(result);
    })
    module.exports = router;

    在路由调用的js文件login.js中

    const global=require('./global');
    var Promise=require('Promise');
    const login={
        panUser:async function (userName,password) {
                var sql = "select * from account where userName =" + userName;
                console.log("sql" + sql);
                var result=await global.db.checkPlayer(userName);
                console.log("/game/login panUser() result" + result);
                if(result==null||result=='')
                {
                    console.log("/game/login panUser() if");
                    result="no";
                }
                else
                {
                    console.log("/game/login panUser() else");
                    var dbPassword = result[0]['password'];
                    console.log("/game/login panUser() Password)");
                    console.log("/game/login panUser() Password)"+password+"dbPassword="+dbPassword);
                    if (password == dbPassword) {
                        result = true;
                    }
                    else {
                        result = false;
                    }
                }
                console.log("/game/login panUser() resolve(result)");
                console.log(result);
            return result;
        }
    }

    在login.js调用的db文件

     //查询玩家
        that.checkPlayer =async function (userName) {
            return new Promise(function(resolve, reject) {
                //查找玩家数据
                let sql = "select * from account where  userName = " + userName + ";";
                try{
                    query(sql, function (err, data) {
                        if (err) {
                            data=null;
                            console.log('err = ' + err);
                        }
                        console.log('check player = ' + JSON.stringify(data));
                        //cb(err, data);
                        resolve(data);
                    });
                }
                catch (event)
                {
                    resolve(null);
                }
    
            });
        };

    使用全局变量文件global

    const db=require('./../utility/http/db');
    const global={};
    global.db=db();
    module.exports= global;

    踩坑:

    在login.js中 需要用 await 来调用db中的函数,不能使用

    return new Promise(function(resolve, reject) 
    
    
  • 相关阅读:
    触发器操作:在触发器中嵌套多个游标
    哈 希 表 的 操 作
    类的覆盖
    java、数据库中命名规则
    html中文字移动命令大全(摘录)
    java中四种过滤器
    日常生活收缩毛孔几个小妙招 生活至上,美容至尚!
    收缩毛孔全过程,很详细! 生活至上,美容至尚!
    懒人的七种超级减肥方法 生活至上,美容至尚!
    晚上美容护肤10要诀 生活至上,美容至尚!
  • 原文地址:https://www.cnblogs.com/zuhaoran/p/8508852.html
Copyright © 2011-2022 走看看