node.js学习随笔20170817

一、node.js处理异常的三种方法
1、同步处理异常
try{
    事件处理;
}catch(err){
    console.log("访问报错如下所示");
    console.log(err.toString());
    response.write(err.toString());
    response.end();
}
2、异步处理异常
fs.readFile(path,function(err,data){
    if(err){
        console.log("访问报错如下所示");
        console.log(err.toString());
        response.write(err.toString());
        response.end();
    }else{
        recall(data);   //闭包
    }
});
3、throw 抛出异常
fs.readFile(path,function(err,data){
    if(err){
        throw '读取失败';
    }else{
        recall(data);   //闭包
    }
});

二、node.js常用导入包

1、var querystring=require('querystring');  

作用:转换为json对象

将异步获取的数据,使用该类转换为json对象。

2、var async=require('async');  

作用:串行、并行交互

安装async包指令:npm install async --g

3、var mysql=require('mysql');  

作用:引入MySQL的调用


4、var events=require('events');  

作用:事件调用

var eventEmitter=new events.EventEmitter();
emitter.addListener(event, listener)==on //添加监听   
emitter.on(event, listener)    
emitter.once(event, listener)//一次性的监听器    
emitter.removeListener(event, listener) //删除指定监听    
emitter.removeAllListeners([event]) //删除所有监听    
emitter.setMaxListeners(n) //默认情况下当一个事件的监听超过10个时,EventEmitter 将打印警告信息,0表无限制    
emitter.listeners(event) //返回特定事件的事件监听器集合    
emitter.emit(event, [arg1], [arg2], [...])  //用提供的参数按顺序执行每个事件监听器。

三、链接运行方式

var async=require('async');
1、串行无关联
async.series(
    {
        'ma':function(done){
                var i=0;
                setInterval(function(){
                    console.log('ma正在运行'+new Date());
                    i++;    
                    if(i==3){
                        clearInterval(this);
                        done(null,'ma运行完毕');     //这里null表示运行正确,当为其它任何值时,表示出错
                    }
                    
                },1000);
            },
            'mb':function(done){
                var i=0;
                setInterval(function(){
                    console.log('mb正在运行'+new Date());
                    i++;                
                    if(i==3){
                        clearInterval(this);
                        done(null,'mb运行完毕');
                    }
                    
                },1000);
            }
    },
    function(err,rs){
        console.log(err);
        console.log(rs);
    }
);


2、并行无关联

async.parallel();    [ˈpærəˌlɛl]  //同串行无关联。

3、串行有关联
async.waterfall                   //瀑布流
async.waterfall([
    function(done){
        var i=0;
        setInterval(function(){
            if(3==i){
                clearInterval(this);
                done(null,'第一步结束:');
                return;
            }
            console.log('在第一步中:'+new Date());
            i++;
        },1000);
    },
    function(preVal,done){
        var i=0;
        setInterval(function(){
            if(3==i){
                clearInterval(this);
                done(null,'第二步结束:');
                return;
            }
            console.log(preVal+new Date());
            i++;
        },1000);
    }
],
function(err,rs){
    console.log(err);
    console.log(rs);
}
);


备注:此处的setTimeout()和setInterval()所指的对象不再是js中的window,而是node.js的全局对象global下的方法,其地位相当于js中的window。

因此,这里clearInterval(this);在node中可以清除计时器,而在js中这样写则不行,还算是要使用变量名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值