电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

JS中間件設計模式的深入探討與實例分析

瀏覽:109日期:2024-05-13 08:26:10

本文實例講述了JS中間件設計模式。分享給大家供大家參考,具體如下:

中間件作為一些輔助處理功能,應用非常廣泛,例如express中間件,redux中間件,koa中間件,那么中間件的設計模式到底是怎樣的呢。結合中間件的使用實例探討和總結一下中間件的設計思想和一般實現模式。

仿照redux中間件實現模式,看如下一個例子:

function fn2(next){ console.log(’執行2,返回改造的next之前’) return action => { console.log(’執行2’) next(action) }}function fn3(next){ console.log(’執行3,返回改造的next之前’) return action => { console.log(’執行3’) next(action) }}function fn1(next){ console.log(’執行1,返回改造的next之前’) return action => { console.log(’執行1’) getData().then( data => { next(action) }) } } function getData(){ return new Promise(resolve => { setTimeout( () => { resolve(true) },3000) })}const next = (action) => { console.log(’action’,action)}// compose([fn1,fn2,fn3])(next)const mm = [fn1,fn2,fn3].reduce(function(a,b,currentIndex,arr){ console.log('a',a) console.log('b',b) return function(...args){ console.log(’args’,[...args][0].toString()) return a(b(...args)) }})(next)(1)

運行結果:這里類似與洋蔥圈模型,但是是先從里向外,再由外向里

執行3,返回改造的next之前args action => {console.log(’執行3’)next(action) }執行2,返回改造的next之前執行1,返回改造的next之前執行1執行2執行3action 1

接下來對上面的實例進行簡化:

function fn2(action){ console.log(’執行2,返回改造的next之前’) action+2}function fn3(action){ console.log(’執行3,返回改造的next之前’) action+1}function fn1(action){ console.log(’執行1,返回改造的next之前’) return action+1 } function getData(){ return new Promise(resolve => { setTimeout( () => { resolve(true) },3000) })}const next = (action) => { console.log(’action’,action)}// compose([fn1,fn2,fn3])(next)const mm = [fn1,fn2,fn3].reduce(function(a,b,currentIndex,arr){ console.log('a',a) console.log('b',b) return function(...args){ console.log(’args’,[...args]) return a(b(...args)) }})(1)

這時的中間件只是一層處理邏輯,沒有傳遞初始處理邏輯,所以中間件是單一的,運行結果:

args [ 1 ]執行3,返回改造的next之前args [ undefined ]執行2,返回改造的next之前執行1,返回改造的next之前

抽離通用邏輯,深入到本質,中間件是對最初處理邏輯函數進行改造,如果沒有,只執行自身的邏輯。

1,上面比較單一的就是只有自身邏輯的中間件

2,具有初始處理邏輯函數next的中間件,需要接受next,返回一個新的next’

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 实验室隔膜泵-无油防腐蚀隔膜泵-耐腐蚀隔膜真空泵-杭州景程仪器 电杆荷载挠度测试仪-电杆荷载位移-管桩测试仪-北京绿野创能机电设备有限公司 | 无缝方管|无缝矩形管|无缝方矩管|无锡方管厂家 | CCE素质教育博览会 | CCE素博会 | 教育展 | 美育展 | 科教展 | 素质教育展 | 东莞工厂厂房装修_无尘车间施工_钢结构工程安装-广东集景建筑装饰设计工程有限公司 | 广东恩亿梯电源有限公司【官网】_UPS不间断电源|EPS应急电源|模块化机房|电动汽车充电桩_UPS电源厂家(恩亿梯UPS电源,UPS不间断电源,不间断电源UPS) | 机器视觉检测系统-视觉检测系统-机器视觉系统-ccd检测系统-视觉控制器-视控一体机 -海克易邦 | 高中学习网-高考生信息学习必备平台 | 单螺旋速冻机-双螺旋-流态化-隧道式-食品速冻机厂家-广州冰泉制冷 | 干培两用箱-细菌恒温培养箱-菲斯福仪器| 咖啡加盟,咖啡店加盟连锁品牌-卡小逗 | 厚壁钢管-厚壁无缝钢管-小口径厚壁钢管-大口径厚壁钢管 - 聊城宽达钢管有限公司 | 北京康百特科技有限公司-分子蒸馏-短程分子蒸馏设备-实验室分子蒸馏设备 | 数显水浴恒温振荡器-分液漏斗萃取振荡器-常州市凯航仪器有限公司 | 雪花制冰机(实验室雪花制冰机)百科 | 光栅尺_Magnescale探规_磁栅尺_笔式位移传感器_苏州德美达 | 泰安塞纳春天装饰公司【网站】 | 华东师范大学在职研究生招生网_在职研究生招生联展网 | 护腰带生产厂家_磁石_医用_热压护腰_登山护膝_背姿矫正带_保健护具_医疗护具-衡水港盛 | IWIS链条代理-ALPS耦合透镜-硅烷预处理剂-上海顶楚电子有限公司 lcd条形屏-液晶长条屏-户外广告屏-条形智能显示屏-深圳市条形智能电子有限公司 | 急救箱-应急箱-急救包厂家-北京红立方医疗设备有限公司 | 筒瓦厂家-仿古瓦-寺庙-古建琉璃瓦-宜兴市古典园林建筑陶瓷厂有限公司 | 氮化镓芯片-碳化硅二极管 - 华燊泰半导体| 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 山东钢衬塑罐_管道_反应釜厂家-淄博富邦滚塑防腐设备科技有限公司 | 优宝-汽车润滑脂-轴承润滑脂-高温齿轮润滑油脂厂家 | 电伴热系统施工_仪表电伴热保温箱厂家_沃安电伴热管缆工业技术(济南)有限公司 | 周口市风机厂,周鼓风机,河南省周口市风机厂 | SMC-ASCO-CKD气缸-FESTO-MAC电磁阀-上海天筹自动化设备官网 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | 游泳池设计|设备|配件|药品|吸污机-东莞市太平洋康体设施有限公司 | 铝合金线槽_铝型材加工_空调挡水板厂家-江阴炜福金属制品有限公司 | 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 | 上海洗地机-洗地机厂家-全自动洗地机-手推式洗地机-上海滢皓洗地机 | 辐射色度计-字符亮度测试-反射式膜厚仪-苏州瑞格谱光电科技有限公司 | 气动隔膜泵-电动隔膜泵-循环热水泵-液下排污/螺杆/管道/化工泵「厂家」浙江绿邦 | 一体化污水处理设备_生活污水处理设备_全自动加药装置厂家-明基环保 | 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 深圳市源和塑胶电子有限公司-首页 | 不锈钢/气体/液体玻璃转子流量计(防腐,选型,规格)-常州天晟热工仪表有限公司【官网】 | 小威小说网 - 新小威小说网 - 小威小说网小说搜索引擎 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 |