Published on2017年8月7日深入理解和使用 Javascript 中的 setTimeout(fn,0)Javascript首先浏览器是多线程的,各个线程在内核控制下同步执行,一个浏览器至少实现三个常驻线程:Javascript引擎线程、界面渲染线程、浏览器事件触发线程。
Published on2017年8月2日基于Web Audio API的音乐可视化JavascriptHTML5Web Audio API可以在一个音频上下文中对音频进行相关处理,它允许音频基于模块化的流程处理。基本音频操作都是基于音频节点来进行的,这些节点被连接在一起,组成一个音频的路由图。它支持带有不同类型的频道层的多个音源,甚至只需要一个音频上下文。它基于模块化的设计,使得你可以动态的创建复杂的音频功能。
Published on2017年7月12日使用 Github 的 webhooks 进行网站自动化部署Git之前一直使用的是通过配置 `CNAME` 的方式将个人域名 `yugasun.com` 隐射到 `yugasun.github.io`,然后设置 `Github` page 服务,来实现hexo创建的静态博客。但是由于国内 `github` 有时不太稳定,而且也不方便做深入的访问统计,所以自己购买了一台 `VPS` 作为服务器,但是又闲每次博客更新需要登录服务器,更新博客,太繁琐,作为一名懒惰的程序员,于是想到用 `Github webhooks` 来实现。
Published on2017年6月29日异步编程之 PromiseJavascriptJavascript语言的执行环境是“单线程”的,也就是一次只能完成一个任务。如果有多个任务,就必须按照队列顺序来执行。这种模式的好处是 _实现起来简单,执行环境相对单纯_,坏处是 _只要有一个任务耗时很长,就会阻塞整个进程_ ,通常会造成浏览器无响应(假死)。Javascript语言本身并不慢,慢的是读写外部数据,最常见的是等待一个Ajax请求返回结果,等待的时候,如果服务器无响应,或者网络慢,就会导致脚本长时间等待停滞。