代码改变世界

随笔分类 -  ECMAScript规范

细嗅Promise

2014-09-29 20:39 by Barret李靖, 11135 阅读, 收藏, 编辑
摘要: 读完这篇文章,预计会消耗你 40 分钟的时间。Ajax 出现的时候,刮来了一阵异步之风,现在 Nodejs 火爆,又一阵异步狂风刮了过来。需求是越来越苛刻,用户对性能的要求也是越来越高,随之而来的是页面异步操作指数般增长,如果不能恰当的控制代码逻辑,我们就会陷入无穷的回调地狱中。ECMAScript... 阅读全文

ECMAScript 6入门

2014-05-02 21:42 by Barret李靖, 5927 阅读, 收藏, 编辑
摘要: 预计在2014年底,ECMAScript 6将会正式发布,他的草案在13年3月份被冻结,后续提出新特性将会移至ECMASript 7中。目前还没有哪款浏览器实现了ES6的全部内容,兼容性最强的一款要数FireFox了。具体情况可以在这里查看。关于 ECMAScript 6 草案,我在博客里头复制了一... 阅读全文

Javascript分号,加还是不加?

2014-03-16 15:51 by Barret李靖, 8424 阅读, 收藏, 编辑
摘要: 关于这个问题,网上已经有很多人讨论过了,我先说说自己对这个问题的回答:加!(但非必须)有些人写代码,懒得加分号,除非是迫不得已才勉强放一个分号上去。如果你可以保证你写的代码不出现任何 bug,那当然是没有问题,但是很多 JSer 新人,对一些隐含的问题并不是特别清楚,很容易在不知不觉中写出一堆 bug,我们先来了解下 JS 词法语法解析的时候,哪些情况下会自动插入分号。一、自动插入分号的规则注:鼠标滑过文字可以看到翻译原文1. 程序从左到右解析,当纳入下一个 token 无法匹配任何语法:如该 token 跟之前的 token 之间有至少一个 LineTerminal 行终结符违反分割该 to 阅读全文

你所不知道的JavaScript数组

2014-03-03 13:56 by Barret李靖, 12674 阅读, 收藏, 编辑
摘要: 相信每一个 javascript 学习者,都会去了解 JS 的各种基本数据类型,数组就是数据的组合,这是一个很基本也十分简单的概念,他的内容没多少,学好它也不是件难事情。但是本文着重要介绍的并不是我们往常看到的 Array,而是 ArrayBuffer。我写的很多东西都是因为要完成某些特定的功能而刻意总结的,可以算是备忘,本文也是如此!前段时间一直在研究 Web Audio API 以及语音通信相关的知识,内容侧重于音频流在 AudioContext 各个节点之间的流动情况,而现在要摸清楚音频到流底是个什么样的数据格式,所以对 ArrayBuffer 的研究就显得格外重要了。本文地址:http 阅读全文

[Voice communications] 声音的滤波

2014-02-28 13:57 by Barret李靖, 4386 阅读, 收藏, 编辑
摘要: 本系列文章主要是介绍 Web Audio API 的相关知识,以及 web语音通信 中会遇到的一些问题,阐述可能存在错误,还请多多斧正!通过设备获取音频流会不可避免的渗入一些杂音,这些杂音可能来自你周边的环境,也有可能来自录音设备本身,一些低频的声音还好,人耳难以分辨出来,但是那些高频的白噪声对音质的影响是特别大的,如我们听收音机没有调到正确的频率上,会听到吱吱兹兹的刺耳的杂音。这些杂音不仅增大了音频流信号本身的体积,而且我们的耳朵也不喜欢,所以在传输之前必须对音频做相应的滤波处理。本文地址:http://www.cnblogs.com/hustskyking/p/webAudio-filte 阅读全文

[Voice communications] 声道的转换

2014-02-27 13:17 by Barret李靖, 2491 阅读, 收藏, 编辑
摘要: 本系列文章主要是介绍 Web Audio API 的相关知识,以及 web语音通信 中会遇到的一些问题,阐述可能存在错误,还请多多斧正!很多粤语剧都提供了两个声道,一个左声道为粤语,一个右声道有国语。观看者可以自由切换声道,那么切换声道的原理是什么呢?在播放器中,只需要把不同的声道切换到声轨就行了,因为有左右两个声道,所以播放器至少是包含两个声轨的。如果我们想听粤语,只需要将右声道声轨的声音设置为 0,或者临时删掉右声道声轨。本文主要是利用 GainNode 节点控制音量的属性实现两个音轨之间的相互切换,Cross-fading 的意思可以在后面的 DEMO 中用耳朵体会出来~本文地址:htt 阅读全文

[Voice communications] 音量的控制

2014-02-26 12:56 by Barret李靖, 3200 阅读, 收藏, 编辑
摘要: 改变音频的音量是音频处理中最基础的部分,我们可以利用 GainNode 来构建 Mixers 的结构块。GainNode 的接口是很简单的:interface GainNode : AudioNode { readonly attribute AudioParam gain;};通过调节 GainNode.gain.value 就可以实现音频大小的调控了。下文会先介绍使用 Processor 来处理,这是一个最通用的节点,可以处理很多东西。在上文看得到的音频流中我们也使用了该节点。本文地址:http://www.cnblogs.com/hustskyking/p/webAudio-vol... 阅读全文

[Voice communications] 看得到的音频流

2014-02-22 20:45 by Barret李靖, 2647 阅读, 收藏, 编辑
摘要: 上文介绍了 Web Audio API 的相关知识,以及如何在你的 web 程序中引入 音频流,内容都是介绍性的,所以没有写太多 DEMO。本文重点讲解如何利用 Web Audio API 中的中间节点拿到音频信号的信息,并将信息转化成信号图绘制到 canvas 中。从上文中我们了解到,AudioContext 是音频播放和处理的一个环境,大概的流程是这个样子: +---------------+------------------------------------+ | AudioContext | | +---... 阅读全文