异步的终极解决和koa2登陆
1、异步的终极解决
https://www.cnblogs.com/liusixin/p/6727060.html
var sleep = function (time) { return new Promise(function (resolve, reject) { setTimeout(function () { resolve(); }, time); }) }; var start = async function () { // 在这里使用起来就像同步代码那样直观 console.log('start'); await sleep(3000); console.log('end'); }; start();
也就是先把异步事件用Promise 包装一下,然后不用 then,用 await出来,就可以把
异步完美解决为同步,根本不需要引用别人的包来帮助解决了
还是得靠
Promise这个
服务端,1、同步化,
2、 Ts化
2Promise
在JavaScript的世界中,所有代码都是单线程执行的。
由于这个“缺陷”,导致JavaScript的所有网络操作,浏览器事件,都必须是异步执行。异步执行可以用回调函数实现:
3、 怎么ts 化,???,上次bug在哪?
4koa登陆
https://www.itying.com/koa/article-index-id-60.html const session = require('koa-session'); app.keys = ['some secret hurr']; const CONFIG = { key: 'koa:sess', //cookie key (default is koa:sess) maxAge: 86400000, // cookie的过期时间 maxAge in ms (default is 1 days) overwrite: true, //是否可以overwrite (默认default true) httpOnly: true, //cookie是否只有服务器端可以访问 httpOnly or not (default true) signed: true, //签名默认true rolling: false, //在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false) renew: false, //(boolean) renew session when session is nearly expired, }; app.use(session(CONFIG, app)); // 测试一下 router.get('/', async (ctx, next) => { ctx.response.body = '<h1>Index</h1>'+ctx.session.username; }); router.get('/login', async (ctx, next) => { let request = ctx.request; let req_query = request.query; let name = req_query.name; let pwd = req_query.pwd; ctx.session.username =name; ctx.response.body = '<h1>login</h1>'; }); 怎么来拦截每次的请求呢???? 再加入拦截的,so easy app.use(async (ctx, next) => { console.log(`Process ${ctx.request.method} ${ctx.request.url}...`); if( undefined == ctx.session.username ){ ctx.response.body = '<h1>还没有登录,需要登录</h1>'; return; } await next(); }); router.get('/login', async (ctx, next) => { let request = ctx.request; let req_query = request.query; let name = req_query.name; let pwd = req_query.pwd; ctx.session.username =name; ctx.response.body = '<h1>login</h1>'; }); 再加上注销的,soeasy router.get('/loginout', async (ctx, next) => { ctx.session.username =undefined; ctx.response.body = '<h1>loginout</h1>'; });
// koa 登陆d