正常运用:
page.post('/get',async (ctx)=>{
var openId = ctx.session.userInfo.openId;
var rs = await Game.findOne({userid:openId},function(err,_rs){
return _rs;
})
ctx.body = rs;
})
async await就是交替着出现的;先有一个 async然后后面一定有await;
那什么时候用async呢,异步的地方,比如数据库请求基本就可以用了。。。;
下面复杂一点:
page.post('/run',async (ctx)=>{
var postData = await parsePostData(ctx);
var pos = valToNum(postData);
var openId = ctx.session.userInfo.openId;
await runfunc(ctx,pos,openId);
});
exports.parsePostData = function( ctx ) {
return new Promise((resolve, reject) => {
try {
let postdata = "";
ctx.req.addListener('data', (data) => {
postdata += data
})
ctx.req.addListener("end",function(){
//let parseData = parseQueryStr( postdata )
resolve( JSON.parse(postdata) )
})
} catch ( err ) {
reject(err)
}
})
}
用到了Promise,他用resolve(rs)往上抛结果,而await是用 return rs抛结果;另外,promise会更多兼容一些异步,比如nodejs里有的redis,你如果要redis.get(‘xxxx’,(err,rs)=>{})这样的方法时无法用await redis.get(‘xxxx’,(err,rs)=>{}),但是可以用promise;