为了账号安全,请及时绑定邮箱和手机立即绑定

关于async/await的疑问

关于async/await的疑问

长风秋雁 2019-03-07 14:09:46
希望等待一步操作完成之后,再往下执行 为啥这个不行async function f(mysql_con){        await mysql_con.query("select * from stu_detail where stu_no = ?",['2015130'],async function(err,result,fields){            console.log(result)            console.log(q.sql)            if(result.length == 0){                console.log("数据为空");                await mysql_con.query("insert into stu_detail set ?",{stu_no:"2015130"},function(err,result,fields){                    console.log(a.sql)                    if(err){                        console.log(err)                    }                    console.log("charu")                    console.log(result)                                    })                        }else{                await  mysql_con.query("update stu_detail set ?",{stu_name:"陈翰轩"});            }        for(var i=0;i<fields.length;i++){            // console.log(fields[i])            console.log(fields[i].name)        }            // pools[0].end();        // exitProcess()    })        mysql_con.end();        exitProcess()}
查看完整描述

4 回答

?
繁花不似锦

TA贡献1851条经验 获得超4个赞

await 明显不是这样用的。

await function1

而不是 
await function1(function (){
})

如果function1不是返回的Promise,那么你用await肯定没效果


查看完整回答
反对 回复 2019-03-18
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

我使用了 bluebird 这个包


const bluebird = require('bluebird');


async function f(mysql_con){

    const query = bluebird.promisify(mysql_con.query.bind(mysql_con));

    const result1 = await query('XXX');

    const result2 = await query('XXX');

    console.log(result1,result2)

}


查看完整回答
反对 回复 2019-03-18
?
慕运维8079593

TA贡献1876条经验 获得超5个赞

你这个显然不能用async+await,要先promise化,你这个现在是用回调的形式


查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 520 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号