xiaochao Blog

Stay Hungry. Stay Foolish.

每天一个前端知识(98):绝不要同步地调用异步的回调函数

frontend

谨记 即使可以立即得到数据,也不要同地调用异步回调函数。 同步地调用异步的回调函数扰乱了预期的操作序列,并可能导致意想不到的交错代码。 同步地调用异步的回调函数可能会导致栈溢出或错误地处理异常。 使用异步的API,比如setTimeout函数来调度异步回掉函数,使其运行于另一个回合。 参考资料:https://lee134134134.github.io/page/2/

每天一个前端知识(97):使用计数器来执行并行操作

frontend

谨记 JavaScript应用程序中的事件发生是不确定的,即顺序是不可预测的。 使用计数器避免并行操作中的数据竞争。 参考资料:https://lee134134134.github.io/page/2/

每天一个前端知识(96):不要在计算时阻塞事件队列

frontend

谨记 避免在主事件队列中执行代价高昂的算法。 在支持Worker API的平台,该API可以用来在一个独立的事件队列中运行长计算程序。 在Worker API不可用或代价昂贵的环境中,考虑将计算程序分解到事件循环的多个轮次中。 参考资料:https://lee134134134.github.io/page/2/

每天一个前端知识(95):对异步的循环使用递归

frontend

谨记 循环不能是异步的。 使用递归函数在事件循环的单独轮次中执行迭代。 在事件循环的单独轮次中执行递归,并不会导致调用栈溢出。 参考资料:https://lee134134134.github.io/page/2/

每天一个前端知识(94):当心丢弃错误

frontend

try { (function(){ setTimeout(function() { console.log(a + b); }, 3000) })(); (function(){ setTimeout(function() { console.log(c + b); ...

每天一个前端知识(93):在异步序列中使用嵌套或命名的回调函数

frontend

谨记 使用嵌套或命名的回调函数按顺序地执行多个异步操作。 尝试在过多的嵌套的回调函数和尴尬的命名的非嵌套回调函数之间取得平衡。 避免将可被并行执行的操作顺序化。 参考资料:https://lee134134134.github.io/page/3/

每天一个前端知识(92): 不要阻塞I/O事件队列

frontend

谨记 异步API使用回调函数来延缓处理代价高昂的操作以避免阻塞主应用程序。 JavaScript并发地接受事件,但会使用一个时间队列按顺序地处理事件处理程序。 在应用程序事件队列中绝不要使用阻塞的I/O。 参考资料:https://lee134134134.github.io/page/3/

每天一个前端知识(91): 支持方法链

frontend

// 有状态的方法 function Counter(value) { this.value = value; } Counter.prototype.increment = function() { this.value++; return this; }; var c = new Counter(0); c.increment() .increment() ....

每天一个前端知识(90):避免过度的强制转换

frontend

function square(x) { // 这里会进行强制的类型转换 return x * x; } console.log(square('3')); // 9 // 一种比较好的方式,我们在函数内部判断参数是否是一个数字 function square1(x) { if('number' === typeof x) { return x * x...

每天一个前端知识(89):区分数组对象和类数组对象

frontend

function test() { // arguments 是类数组对象 console.log(arguments); // { '0': 1, '1': 2, '2': 3 } // 判断arguments的类型 console.log(typeof arguments); // object // 判断是否是数组 console.log...