睡前故事

讲个睡前故事吧,不动脑筋的那种。

firebug是个很好的东西,可以用console.log来打印日志。可是用过log4j的人会觉得它烦…没有线程进程号(唔,这个倒也合理,javascript总共就一个线程)也就算了,但能说因此就不需要时间了吗?换成下面的函数好了:

 function log(msg) {
    var d = new Date();
    console.log("%s:%s:%s",
    ("0" + d.getHours()).slice(-2),
    ("0" + d.getMinutes()).slice(-2),
    ("0" + d.getSeconds()).slice(-2),
    msg);
}

为了防止”2:3:4″这样的时间也被打印出来,采用了(“0″ + d.getHours()).slice(-2)这样的方法。如果小时数本来就有两位,那么第一个0就算是白加,不过这正是我们想要的结果。

Firebug的log比较sweet的地方是,它支持”%s”语法,不过多余的就别想了,比如字段宽度神马的。

第二个故事是,以前的贴子讲过很多的陈年旧事了…Javascript跟时间有关的那些事…这世上最重要的就是时间,时机,时序,时态这些事了。如果事件B必须在事件A之后才能发生,前面的贴子讲过,可以用dojo.Deferred来解决。不过如果此刻手边没有dojo这件兵器呢?或者不想牛刀杀鸡(其实是直线式编程模式习惯了的托辞)呢?

在某些特殊的初始化场景下,比如在函数一开头就要等待某件事发生,判断它出现后才继续执行下面的代码,这种情况下,也有比较简单的办法。

function run(){
    if (!init()){
        setTimeout(run, 500);
        return;
    }

    // ready to go! The rest of my code
}


不过要注意这里init可能会被调用多次,所以还要做保护。另外run函数可能是被计时器调用的,所以要小心当时的执行环境什么的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值