当前位置: 首页 > news >正文

杨凌网站建设wordpress 中的函数大全

杨凌网站建设,wordpress 中的函数大全,seo外包公司接单,wordpress+外网无法访问上上节实现了上下文的#xff0c;上一节使用了一下中间件#xff0c;这一节来实现 koa 的中间件这个洋葱模型。 思路#xff1a; 储存用户所有的 callback将用户传递的 callback 全部组合起来#xff08;redux 里的 compose#xff09;组合成一个线性结构依次执行#…上上节实现了上下文的上一节使用了一下中间件这一节来实现 koa 的中间件这个洋葱模型。 思路 储存用户所有的 callback将用户传递的 callback 全部组合起来redux 里的 compose组合成一个线性结构依次执行组合完返回一个大的 promise当组合后的 promise 完成后拿到最终的结果响应回去 application.js 代码实现如下核心就是组合方法的实现 const EventEmitter require(events); const http require(http); const context require(./context); const request require(./request); const response require(./response);console.log(kaimo-koa----);class Application extends EventEmitter {constructor() {super();// 防止多个实例共享 context request response 需要进行拷贝this.context Object.create(context);this.request Object.create(request);this.response Object.create(response);// 储存用户所有的 callbackthis.middlewares [];}use(callback) {// 将用户传递的 callback 全部组合起来this.middlewares.push(callback);}// 创建一个上下文createContext(req, res) {// 每次请求都应该是一个全新的 context需要拷贝let ctx Object.create(this.context);// 上下文中有一个 request 对象是自己封装的ctx.request Object.create(this.request);// 上下文中还有一个 req 属性 指代的是原生的 req自己封装的 request 对象上有 req 属性ctx.req ctx.request.req req;// 上下文中还有一个 response 对象是自己封装的ctx.response Object.create(this.response);// 上下文中还有一个 res 属性 指代的是原生的 res自己封装的 response 对象上有 res 属性ctx.res ctx.response.res res;return ctx;}compose(ctx) {// 在数组中取出第一个第一个执行后执行第二个const dispatch (i) {if (i this.middlewares.length) return Promise.resolve();let middleware this.middlewares[i];// 中间件如果不是 async 需要 Promise 包装一下() dispatch(i 1) 就是 nextreturn Promise.resolve(middleware(ctx, () dispatch(i 1)));};return dispatch(0);}async handleRequest(req, res) {const ctx this.createContext(req, res);// 组合成一个线性结构依次执行组合完返回一个大的 promiseawait this.compose(ctx);// 当组合后的 promise 完成后拿到最终的结果响应回去let body ctx.body;res.end(body);}listen(...args) {const server http.createServer(this.handleRequest.bind(this));server.listen(...args);} }module.exports Application;然后我们编写测试 demo.js const Koa require(./kaimo-koa);const app new Koa();const log () {return new Promise((resolve, reject) {setTimeout(() {console.log(kaimo313);resolve();}, 3000);}); };app.use(async (ctx, next) {console.log(1);console.time(kaimo);await next();ctx.body hello 1;console.log(2);console.timeEnd(kaimo); });app.use(async (ctx, next) {console.log(3);await log();ctx.body hello 2;await next();console.log(4); });app.use(async (ctx, next) {console.log(5);ctx.body hello 3;await next();console.log(6); });app.listen(3000);启动服务访问 http://localhost:3000/ nodemon demo.js
http://www.hkea.cn/news/14555894/

相关文章:

  • 网站建设公司相关资质飞机加速器
  • 净化科技网站建设东莞大岭山
  • 深圳市外贸网站建设多少钱推广营销app
  • 个人网站背景图片做平面设计一般上哪个网站参考
  • 免费网站建设系统网站推广的目标
  • 站长工具亚洲网站建设七个步骤
  • 百度收不到我的网站校园网二级网站的建设
  • 做网站需要绑定电脑ip吗旅游网站的建设开题报告
  • 石家庄网站建设选汉狮建筑项目查询平台
  • 不同企业的网络营销网站wordpress免费资源
  • 明星网页网站制作虾想网络定制
  • 上海网站建设定wordpress搭建网盘
  • 网站建设招标书专业制作网站有哪些
  • 凉山州建设银行官方网站中国乌镇互联网国际峰会
  • 深圳的设计企业网站手机版免费个人简历
  • 如何访问自己做的网站seo网站推广企业
  • 廊坊市建设银行网站dede 网站建设模板
  • 网站名称和域名有关系做创意ppt网站有哪些
  • 湖南网站推广电话中国煤炭建设协会网站qc
  • 棋牌app开发价格表宁波seo网络推广产品服务
  • 备案号怎么放到网站无锡网页建站
  • qq建设网站app和网站开发
  • pc网站建设企业上海网页设计多少钱
  • 建设网站怎样通过流量赚钱企业网站建设价钱
  • 内蒙网站开发简约型网站建设
  • 南宁 网站建设 制作下载优化大师并安装
  • 做网站导航菜单手机网站制作大约多少钱
  • 简述企业网站推广的策略义乌公司网站制作
  • 免费私人网站wordpress的媒体库图片不显示
  • asp网站vps搬家建设家居网站