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

免费空间访客领取网站直播网站建设需要什么软件

免费空间访客领取网站,直播网站建设需要什么软件,中学生设计制作图片,流放之路做装备词缀网站async/await 的理解 async/await 其实是 Generator 的语法糖#xff0c;它能实现的效果都能用then 链来实现#xff0c;它是为优化 then 链而开发出来的。从字面上来看#xff0c;async 是“异步”的简写#xff0c;await 则为等待#xff0c;所以很好理解async用于申明一…async/await 的理解 async/await 其实是 Generator 的语法糖它能实现的效果都能用then 链来实现它是为优化 then 链而开发出来的。从字面上来看async 是“异步”的简写await 则为等待所以很好理解async用于申明一个 function 是异步的而 await 用于等待一个异步方法执行完成。当然语法上强制规定 await 只能出现在asnyc 函数中先来看看 async 函数返回了什么 async function testAsy() {return hello world;; } let result testAsy(); console.log(result); Promise {fulfilled: hello world;} [[Prototype]]: Promise [[PromiseState]]: fulfilled [[PromiseResult]]: hello world;所以async 函数返回的是一个 Promise 对象。async 函数包含函数语句、函数表达式、Lambda 表达式会返回一个Promise对象如果在函数中 return 一个直接量async 会把这个直接量通过Promise.resolve() 封装成 Promise 对象。async 函数返回的是一个 Promise 对象所以在最外层不能用await 获取其返回值的情况下当然应该用原来的方式then()链来处理这个 Promise 对象就像这样 async function testAsy() {return hello world;; } let result testAsy(); console.log(result); result.then(res {console.log(res); // hello world; })那如果 async 函数没有返回值又该如何很容易想到他会返回 Promise.resolve(undefined);联想一下 Promise 的特点——无等待所以在没有await 的情况下执行 async 函数它会立即执行返回一个Promise 对象并且绝不会阻塞后面的语句。这和普通返回Promise 对象的函数并无二致。 注意Promise.resolve(x) 可以看作是new Promise(resolveresolve(x)) 的简写可以用于快速封装字面量对象或其他对象将其封装成 Promise 实例。async/await 的优势 单一的 Promise 链并不能发现 async/await 的优势但是如果需要处理由多个 Promise 组成的 then 链的时候优势就能体现出来了很有意思Promise 通过 then 链来解决多层回调的问题现在又用 async/await 来进一步优化它。 假设一个业务分多个步骤完成每个步骤都是异步的而且依赖于上一个步骤的结果。仍然用 setTimeout 来模拟异步操作 function takeLongTime(n) {return new Promise(resolve {setTimeout(() resolve(n 200), n)}) };function step1(n) {console.log(step1 with ${n});return takeLongTime(n); } function step2(n) {console.log(step2 with ${n});return takeLongTime(n); } function step3(n) {console.log(step3 with ${n});return takeLongTime(n); }现在用 Promise 方式来实现这三个步骤的处理 function doIt(n) {console.time(doIt);const time1 300;step1(time1).then(time2 step2(time2)).then(time3 step3(time3)).then(result {console.log(result is ${result});console.timeEnd(doIt);}); }doIt(); step1 with 300 step2 with 500 step3 with 700 result is 900 doIt: 1.652s 输出结果 result 是 step3() 的参数 700 200 900。doIt()顺序执行了三个步骤一共用了 300 500 700 1500 毫秒和console.time()/console.timeEnd() 计算的结果一致。如果用 async/await 来实现呢会是这样 async function doIt() {console.time(doIt);const time1 300;const time2 await step1(time1);const time3 await step2(time2);const result await step3(time3);console.log(result is ${result});console.timeEnd(doIt); } doIt(); step1 with 300 step2 with 500 step3 with 700 result is 900 doIt: 1.515s结果和之前的 Promise 实现是一样的但是这个代码看起来是不是清晰得多几乎跟同步代码一样 async/await 对比 Promise 的优势 代码读起来更加同步Promise 虽然摆脱了回调地狱但是then的链式调⽤也会带来额外的阅读负担 Promise 传递中间值⾮常麻烦⽽async/await⼏乎是同步的写法⾮常优雅 错误处理友好async/await 可以⽤成熟的try/catchPromise的错误捕获⾮常冗余 调试友好Promise 的调试很差由于没有代码块你不能在⼀个返回表达式的箭头函数中设置断点如果你在⼀个.then 代码块中使⽤调试器的步进(step-over)功能调试器并不会进⼊后续的.then代码块因为调试器只能跟踪同步代码的每⼀步。
http://www.hkea.cn/news/14553749/

相关文章:

  • 互联网金融型网站开发肇庆东莞网站建设
  • 建设网站的风险6做任务打字赚钱的网站
  • 金戈西地那非片能延时多久网站整站优化
  • 寮步营销型网站建设极速建站系统开发
  • 个人建站除了wordpress如何写手机适配网站
  • 企业建站系统平台手机制作网页的app
  • 上海网站建设多少旅游攻略网站开发
  • 双语网站系统wordpress很难
  • 做百度手机网站快速排网站建设销售合同
  • 凯里公司网站建设济南疾控最新发布
  • 婚庆摄影网站模板制作图片工具
  • 网站设计企业联系方式内容中国建设银行官网开户行查询
  • 用excel可以做网站90平装修大约多少钱
  • 北京网站制作闪快电子商务营销师
  • 临潼微网站建设网站安全建设的重要性
  • 做网站备案是个人还是企业好巨鹿建设银行网站首页
  • 云南城市建设培训中心网站百度集团总部在哪里
  • 双语网站模板建设安全员协会网站
  • 旅游网站开发公司网站后台管理系统数据库
  • 游戏网站建设多少钱订货商城小程序源码
  • 一站式网站建设哪家做网站公司
  • 织梦圈子如何调用网站默认模板信息查询app
  • 提供网站建设工具哪个网站看电影做便宜
  • 班级网站模板素材销售助手app最新版本
  • 小勐拉网站建设wordpress 注册中文名
  • 网站制作项目分析怎么做 方法西安免费自助建站模板
  • 医药公司网站建设太原网站优化技术
  • 上城网站建设专门做ui图标的网站
  • 网站内容建设怎么写山西响应式网站建设推荐
  • 东莞做创意网站巨鹿网站建设网络公司