javascript

  • Javascript异步流程控制之Promise(2)-Angular $q源码解读

    原文写于 2015-01-27

    接上一篇 Angular $q简介 ,这一篇我们就Angular对$q的代码实现来学习下Promise的实现原理及思想
    上篇讲到了Angular Promise的基本API,其中就典型的应用类似这样

    Promise.then

    var defer = $q.defer();
    
    setTimeout(function (){
        defer.resolve(10);
    },5000);
    console.log("1");
    defer.promise.then(function(a

  • Javascript单线程及定时器原理分析(1)

    原文写于 2014-07-28

    Talk is cheap, code first.

    说出代码运行结果

    var i,a=0;
    setTimeout(function(){
        console.log("timeout");
    }, 1000);
    for(i=0;i<10;i++){
        a += i;
        if(i === 9){
            console.log("loop over");
        }
    }

    没错,当然是 loop over --> timeout
    那么如果我们把timeout时间设为 0 呢,就像这

  • [转载]AngularJs的一些坑

    原文 2013-12-09

    原文地址:http://blog.jobbole.com/52857/
    最近几个月频繁的跟AngularJS打交道,对于web应用开发来说Angular真的是一个神奇的框架,但是没有东西是完美的,在这篇文章里我会把我的感悟罗列出来,希望可以产生共鸣(前提是你对Angular已经有所了解)。

    UI的闪烁

    Angular的自动数据绑定功能是亮点,然而,他的另一面是:在Angular初始化之前,页面中可能会给用户呈现出没有解析的表达式。当DOM准备就绪,Angular计算并替换相应的值。这样就会导致出现一个丑陋的闪烁效果。

    上述情形就是

  • 前端优化之js资源加载策略

    原文写于 2014-08-13

    阅读这篇blog之前,请先看下这本书:高性能网站建设进阶指南,里面详细的讲解了现今流行的几种异步脚本加载方案(不过里面一些结论不能盲目相信,实践之前请手动验证一下,毕竟浏览器实现日新月异)
    不过还是先简单介绍下两种最常用的动态加载js资源的方案:

    • document.write方式

      function outerHTML (node) {
                  // if IE, Chrome take the internal method otherwise build one
                  return node.o

  • 移动端javascript之事件

    原文写于 2014-12-23

    Javascript的事件体系想必大家都已经耳熟能详了,它是支撑起前端交互的支柱,当然我们这里不讲DOM2 抑或DOM3 里的标准事件,这里来说说基于移动端的、单点触碰事件(多点及手势事件后续有空咱再聊)。
    移动端事件的标准最初是由苹果safari团队制定,用于触碰设备的交互,包含以下几种事件:

    1. touchstart 当手指触摸到屏幕时触发。屏幕任何区域,记住,是任何区域!
    2. touchmove 当手指在屏幕上滑动时连续的触发。中途可以通过调用event.preventDefault()阻止滚动
    3. touchend 当手指从屏幕