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

汉中市住建局建设厅网站官网已注册的网站如何注销

汉中市住建局建设厅网站官网,已注册的网站如何注销,校园网站方案,企业自建平台有哪些引言 js的异步操作#xff0c;已经是一个老生常谈的话题#xff0c;关于这个话题的文章随便google一下都可以看到一大堆。处理js的异步操作#xff0c;都有一些什么方法呢#xff1f;仁者见仁智者见智 一、回调函数 传说中的“callback hell”就是来自回调函数。而回调函…引言 js的异步操作已经是一个老生常谈的话题关于这个话题的文章随便google一下都可以看到一大堆。处理js的异步操作都有一些什么方法呢仁者见仁智者见智 一、回调函数 传说中的“callback hell”就是来自回调函数。而回调函数也是最基础最常用的处理js异步操作的办法。我们来看一个简单的例子 首先定义三个函数 function fn1 () {console.log(Function 1) }function fn2 () {setTimeout(() {console.log(Function 2)}, 500) }function fn3 () {console.log(Function 3) } 其中fn2可以视作一个延迟了500毫秒执行的异步函数。现在我希望可以依次执行fn1fn2fn3。为了保证fn3在最后执行我们可以把它作为fn2的回调函数 function fn2 (f) {setTimeout(() {console.log(Function 2)f()}, 500) }fn2(fn3) 可以看到fn2和fn3完全耦合在一起如果有多个类似的函数很有可能会出现fn1(fn2(fn3(fn4(...))))这样的情况。回调地狱的坏处我就不赘述了相信各位读者一定有自己的体会。 二、事件发布/订阅 发布/订阅模式也是诸多设计模式当中的一种恰好这种方式可以在es5下相当优雅地处理异步操作。什么是发布/订阅呢以上一节的例子来说fn1fn2fn3都可以视作一个事件的发布者只要执行它就会发布一个事件。这个时候我们可以通过一个事件的订阅者去批量订阅并处理这些事件包括它们的先后顺序。下面我们基于上一章节的例子增加一个消息订阅者的方法为了简单起见代码使用了es6的写法 class AsyncFunArr {constructor (...arr) {this.funcArr [...arr]}next () {const fn this.funcArr.shift()if (typeof fn function) fn()}run () {this.next()} }const asyncFunArr new AsyncFunArr(fn1, fn2, fn3) 然后在fn1fn2fn3内调用其next()方法 function fn1 () {console.log(Function 1)asyncFunArr.next() }function fn2 () {setTimeout(() {console.log(Function 2)asyncFunArr.next()}, 500) }function fn3 () {console.log(Function 3)asyncFunArr.next() }// output // Function 1 // Function 2 // Function 3 可以看到函数的处理顺序等于传入AsyncFunArr的参数顺序。AsyncFunArr在内部维护一个数组每一次调用next()方法都会按顺序推出数组所保存的一个对象并执行这也是我在实际的工作中比较常用的方法。 三、Promise 使用Promise的方式就不需要额外地编写一个消息订阅者函数了只需要异步函数返回一个Promise即可。且看例子 function fn1 () {console.log(Function 1) }function fn2 () {return new Promise((resolve, reject) {setTimeout(() {console.log(Function 2)resolve()}, 500)}) }function fn3 () {console.log(Function 3) } 同样的我们定义了三个函数其中fn2是一个返回Promise的异步函数现在我们希望按顺序执行它们只需要按以下方式即可 fn1() fn2().then(() { fn3() })// output // Function 1 // Function 2 // Function 3 使用Promise与回调有两个最大的不同第一个是fn2与fn3得以解耦第二是把函数嵌套改为了链式调用无论从语义还是写法上都对开发者更加友好。 四、generator 如果说Promise的使用能够化回调为链式那么generator的办法则可以消灭那一大堆的Promise特征方法比如一大堆的then()。 function fn1 () {console.log(Function 1) }function fn2 () {setTimeout(() {console.log(Function 2)af.next()}, 500) }function fn3 () {console.log(Function 3) }function* asyncFunArr (...fn) {fn[0]()yield fn[1]()fn[2]() }const af asyncFunArr(fn1, fn2, fn3)af.next()// output // Function 1 // Function 2 // Function 3 在这个例子中generator函数asyncFunArr()接受一个待执行函数列表fn异步函数将会通过yield来执行。在异步函数内通过af.next()激活generator函数的下一步操作。 这么粗略的看起来其实和发布/订阅模式非常相似都是通过在异步函数内部主动调用方法告诉订阅者去执行下一步操作。但是这种方式还是不够优雅比如说如果有多个异步函数那么这个generator函数肯定得改写而且在语义化的程度来说也有一点不太直观。 五、优雅的async/await 使用最新版本的Node已经可以原生支持async/await写法了通过各种pollyfill也能在旧的浏览器使用。那么为什么说async/await方法是最优雅的呢且看代码 function fn1 () {console.log(Function 1) }function fn2 () {return new Promise((resolve, reject) {setTimeout(() {console.log(Function 2)resolve()}, 500)}) }function fn3 () {console.log(Function 3) }async function asyncFunArr () {fn1()await fn2()fn3() }asyncFunArr()// output // Function 1 // Function 2 // Function 3 有没有发现在定义异步函数fn2的时候其内容和前文使用Promise的时候一模一样再看执行函数asyncFunArr()其执行的方式和使用generator的时候也非常类似。 异步的操作都返回Promise需要顺序执行时只需要await相应的函数即可这种方式在语义化方面非常友好对于代码的维护也很简单——只需要返回Promise并await它就好无需像generator那般需要自己去维护内部yield的执行。 六、尾声 作为一个归纳和总结本文内容的诸多知识点也是来自于他人的经验不过加入了一些自己的理解和体会。不求科普于他人但求作为个人的积累。希望读者可以提出订正的意见共同学习进步 题外话 《Pi Network 免费挖矿国外热门项目 一个π币大约值3元到10元》相信过去BTC的人信不信未来的PI了解一下唯一一个高度与之持平的项目
http://www.huolong8.cn/news/439948/

相关文章:

  • mg电子游戏网站开发郑州视频网站建设大概多少钱
  • 淘宝网店网站建设目的软件开发专业哪个学校好
  • 内网网站搭建工具信阳市网站建设
  • 飞言情做最好的小说网站内江做网站
  • 宁波做网站首荐荣盛网络用flash做的网站有哪些
  • 做网站 科目wordpress主题demo导入
  • 教你如何做好网站jsp做网站框架
  • 安全电子商务网站设计宿迁网站建设sq918
  • 做我女朋友的表白句的网站石家庄seo网络优化的公司
  • 游戏推广网站制作九江室内设计学校
  • 建设银行申请信用卡网站首页湖北网站建设网址
  • 建设银行河北省分行网站会员卡系统一般哪里买
  • 中国小康建设网是骗子网站吗?dede免费手机网站模板下载
  • 竞价网站与竞价网站之间做友情链接网页设计就业工资
  • 仪征建设局网站网站包503错误
  • 苏州建设网站的公司广州海珠建网站的公司
  • 如何一个空间做多个网站google优化推广
  • 苏州前几天网站建设常见的分类信息网站有哪些
  • 微信网站可以免费做么自己做网站需要买什么
  • 做内销的网站推荐广东像一起做网店的网站
  • 广西智能网站建设方案wordpress中文采集
  • 回收网站怎么做h5网站建设方案
  • 专业微网站营销专门做隐形眼镜的网站
  • 附近网站建设店面设计流程
  • 怎么用FTP做网站茶叶公司网站建设策划书
  • 个人电脑做网站主机手机应用下载网站源码
  • hao123主页是哪个软件深圳网站优化方法
  • 影视网站开发工程师南阳做网站推广
  • 建立网站的链接结构有哪几种形式?简述其各自的优缺点wordpress网页移动端
  • 建设网站文献做网站 图片格式