点击上方"前端自习课"关注,学习起来~ JavaScript 中有很多种异步编程的方式.callback.promise.generator.async await 甚至 RxJS.我最初接触不同的异步模式时,曾想当然的觉得 promise 就是比 callback 好, async await 比就是比 promise 优雅,会把它们割裂起来看待.后来发现也不完全这样,各种异步模式之间其实存在着关联,也有着各自擅长的场景. JvaScript 中的各种异步模式 Callback 我们…
JavaScript 中有很多种异步编程的方式.callback.promise.generator.async await 甚至 RxJS.我最初接触不同的异步模式时,曾想当然的觉得 promise 就是比 callback 好, async await 比就是比 promise 优雅,会把它们割裂起来看待.后来发现也不完全这样,各种异步模式之间其实存在着关联,也有着各自擅长的场景. JvaScript 中的各种异步模式 Callback 我们知道在 JavaScript 中,函数是一等公民,…
本周再来翻译一些技术文章,本次预计翻译三篇文章如下: 04.[译]使用Nuxt生成静态网站(Generate Static Websites with Nuxt) 05.[译]Web网页内容是如何影响电池功耗的(How Web Content Can Affect Power Usage) 06.[译]在现代JavaScript中编写异步任务(https://web.dev/off-main-thread/) 我翻译的技术文章都放在一个github仓库中,如果觉得有用请点击star收藏.我为什么…
理解javascript中的策略模式 策略模式的定义是:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换. 使用策略模式的优点如下: 优点:1. 策略模式利用组合,委托等技术和思想,有效的避免很多if条件语句. 2. 策略模式提供了开放-封闭原则,使代码更容易理解和扩展. 3. 策略模式中的代码可以复用. 一:使用策略模式计算奖金: 下面的demo是我在书上看到的,但是没有关系,我们只是来理解下策略模式的使用而已,我们可以使用策略模式来计算奖金问题: 比如公司的年终奖是根据员工的工…
javascript中的异步 macrotask 和 microtask 简介 什么是macrotask?什么是microtask?在理解什么是macrotask?什么是microtask之前,我们先来看看javascript中的事件循环机制,先看如下面一段代码: console.log(1); setTimeout(function(){ console.log(2); }, 0); console.log(3); 很明显 上面运行的结果是 1,3,2;上面代码 setTimeout的延时为0…
最近在读一本设计模式的书,书中的开头部分就讲了一下 JavaScript 中的继承,阅读之后写下了这篇博客作为笔记.毕竟好记性不如烂笔头. JavaScript 是一门面向对象的语言,但是 ES6 之前 JavaScript 是没有类这个概念的.即使 ES6 引入了 class,也只是基于 JavaScript 已有的原型继承模式的一个语法糖,并没有为 JavaScript 引入新的面向对象的继承模型. 但是 JavaScript 是一门非常灵活的语言,为了实现类和继承,JavaScript D…
PDF.Js的使用—javascript中前端显示pdf文件 写于2018/12/6 起因是一个图片展示页面需要展示pdf格式的文件,所以查了半天决定使用pdf.js,我也不求有多了解它,能实现我想要的效果就行,但至少到了最后我让它的demo跑了起来. 网上很多教程要么不全,要么就是很杂很深又不靠谱,因为我不怎么想了解它是用什么框架完成的,怎么make的,我只想要在前端引入js并能展示pdf,所以很多看不下去,但是获得pdf.js之前还是需要进行一些配置,大致的配置过程如下吧. 1. 取得pdf…
JavaScript中的异步函数 ES8 的 async/await 旨在解决利用异步结构组织代码的问题.为此, ECMAScript 对函数进行了扩展,为其增加了两个新关键字: async 和 await. async 关键字用于声明异步函数.这个关键字可以用在函数声明.函数表达式.箭头函数和方法上 使用 async 关键字可以让函数具有异步特征,但总体上其代码仍然是同步求值的.而在参数或闭包方面,异步函数仍然具有普通 JavaScript 函数的正常行为 不过,异步函数如果使用 return…
1.事件模型 let button = document.getElementById("my-btn"); button.onclick = function(event) { console.log("Clicked"); }; console.log("Clicked")直到 button 被点击后才会被执行.当 button 被点击,赋值给 onclick 的函数就被添加到作业队列的尾部,并在队列前部所有任务结束之后再执行.事件在响应用户…
看过很多setTimeout.Promise执行顺序的面试题,一直不明白为啥都是异步操作,Promise就牛×些呢?直到了解了macrotask和micromask才恍然大悟... 先来一道面试题助助兴: setTimeout(()=>{ console.log('A'); },0); var obj={ func: function () { setTimeout(function () { console.log('B') },0); return new Promise(function…