前言 首先来看一个JavaScript的代码片段: console.log(1); setTimeout(() => { console.log(2); Promise.resolve().then(() => { console.log(3) }); }, 0); new Promise((resolve, reject) => { console.log(4) resolve(5) }).then((data) => { console.log(data); }) setTim…
闭包是JavaScript中的一个重要特性,在之前的博文中,我们说闭包是一个'看似简单,其实很有内涵'的特性.当我们用JavaScript来实现相对复杂的业务建模时,我们可以如何利用'闭包'这个特性呢?JavaScript中的'原型继承',又可以解决业务建模中的哪些问题呢?今天我们就通过一家'榨汁机工厂'生产设计'榨汁机'的故事,来聊一聊'闭包'和'原型继承'在业务建模中的作用.现在直播开始: 1> 工厂默认选用A型刀头方案制造榨汁机 例子当中我们主要涉及到2个函数:1.榨汁机的生产工厂(Jui…
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…
1.异步任务运行机制 先运行下面的一段代码: console.log('script start'); setTimeout(function() { console.log('setTimeout'); }, 0); console.log('script end'); //"script start" //"script end" //"setTimeout" 这里一看,setTimeout的延时为 0 ,那么是不是程序执行到这里之后就立即执…
这个知识点... https://blog.keifergu.me/2017/03/23/difference-between-javascript-macrotask-and-microtask/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io 前端基础进阶系列 这个系统也超屌!! http://www.jianshu.com/p/cd3fee40ef59 ======================= Macrot…
[译]聊聊C#中的泛型的使用(新手勿入)   写在前面 今天忙里偷闲在浏览外文的时候看到一篇讲C#中泛型的使用的文章,因此加上本人的理解以及四级没过的英语水平斗胆给大伙进行了翻译,当然在翻译的过程中发现了一些问题,因此也进行了纠正,当然,原文的地址我放在最下面,如果你的英文水平比较好的话,可以直接直接阅读全文.同时最近建了一个.NET Core实战项目交流群637326624,有兴趣的朋友可以来相互交流.目前.NET Core实战项目之CMS的教程也已经更新了6篇了,目前两到三天更新一篇. 作者…
本人正在努力学习前端,内容仅供参考.由于各种原因(不喜欢博客园的UI),大家可以移步我的github阅读体验更佳:传送门,喜欢就点个star咯,或者我的博客:https://blog.tangzhengwei.me 掘金:传送门,segmentfault:传送门 前言 Philip Roberts 在演讲 great talk at JSConf on the event loop 中说:要是用一句话来形容 JavaScript,我可能会这样: "JavaScript 是单线程.异步.非阻塞.解…
前言 Philip Roberts 在演讲 great talk at JSConf on the event loop 中说:要是用一句话来形容 JavaScript,我可能会这样: “JavaScript 是单线程.异步.非阻塞.解释型脚本语言.” 单线程 ? 异步 ? ? 非阻塞 ? ? ? 然后,这又牵扯到了事件循环.消息队列,还有微任务.宏任务这些. 作为一个初学者,对这些了解甚少. 这几天翻阅了不少资料,似乎了解到了一二,是时候总结一下了,它们困扰了我好一段时间,就像学高数那会儿自己…
众所周知(这也忒夸张了吧?),Javascript通过事件驱动机制,在单线程模型下,以异步的形式来实现非阻塞的IO操作.这种模式使得JavaScript在处理事务时非常高效,但这带来了很多问题,比如异常处理困难.函数嵌套过深.下面介绍几种目前已知的实现异步操作的解决方案. [TOC](操蛋,不支持TOC) 一.回调函数 这是最古老的一种异步解决方案:通过参数传入回调,未来调用回调时让函数的调用者判断发生了什么. 直接偷懒上阮大神的例子: 假定有两个函数f1和f2,后者等待前者的执行结果. 如果f…
众所周知,JavaScript 的执行环境是单线程的,所谓的单线程就是一次只能完成一个任务,其任务的调度方式就是排队,这就和火车站洗手间门口的等待一样,前面的那个人没有搞定,你就只能站在后面排队等着.在事件队列中加一个延时,这样的问题便可以得到缓解. A: 嘿,哥们儿,快点! B: 我要三分钟,你先等着,完了叫你~ A: 好的,记得叫我啊~ 你(C)也等着吧,完了叫你~ C: 嗯! ... 告诉后面排队的人一个准确的时间,这样后面的人就可以利用这段时间去干点别的事情,而不是所有的人都排在队列后抱…