nodejs系列(二)REPL交互解释 事件循环
2016-01-13 16:33
603 查看
一、REPL交互解释
命令行中输入node启动REPL:
> var x =2;
undefined
> do{x++;
... console.log("x:="+x);
... }while(x<6);
x:=3
x:=4
x:=5
x:=6
undefined
>
Ctrl + C退出循环或者当前终端;
> a * b
30
> var c = _
undefined
> console.log(c)
30
二、事件循环
这个小demo差点成为我的瓶颈(想想也很可笑的,居然这样了,习惯太差)
//引入 events 模块
//var events = require('events');
////创建 eventEmitter 对象
////var eventEmitter = new events.EventEmitter();
var eventEmitter = new (require('events')).EventEmitter();
//////创建 eventEmitter 对象
//var eventEmitter = new events.EventEmitter();
////绑定事件及事件的处理程序
//eventEmitter.on('eventname',eventHandler);
////触发事件
//eventEmitter.emit('eventname');
//创建事件处理程序
var connectHandler = function connected(){
console.log('第①步--连接成功!');
//触发事件 data_received
eventEmitter.emit('data_received');
var x = 5,y = 3;
console.log("第③步--"+(x+y));
}
兰青色部分必须之前定义
//绑定 connection 事件处理程序
eventEmitter.on('connection',connectHandler);
//使用匿名函数绑定 data_received事件
eventEmitter.on('data_received',function(){
console.log("第②步--数据接收成功!");
})
//触发 connection 事件
eventEmitter.emit("connection");
console.log("第④步--events over!");
E:\node>node main.js
first--cuccess��
second--data success��
third--8
forth--events over!
E:\node>node main.js
第①步--连接成功!
第②步--数据接收成功!
第③步--8
第④步--events over!
var events = require("events"); //注意是events,注意s第二个错误
var emitter = new events.EventEmitter();
emitter.on('someEvent',function(arg1, arg2){
console.log('listener1', arg1, arg2);
});
emitter.on('someEvent', function(arg1, arg2){
console.log('listener2', arg1, arg2);
});
emitter.emit('someEvent', 'arg1 参数', 'arg2 参数');
E:\node\event.js:11 注意封号
emitter.emit('someEvent', 'arg1 鍙傛暟'锛?'arg2 鍙傛暟')锛?
^
SyntaxError: Unexpected token ILLEGAL
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3
E:\node>node event.js
module.js:340
throw err;
^
Error: Cannot find module 'event'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (E:\node\event.js:2:13)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
E:\node>node event.js
listener1 arg1 参数 arg2 参数
listener2 arg1 参数 arg2 参数
E:\node>
命令行中输入node启动REPL:
> var x =2;
undefined
> do{x++;
... console.log("x:="+x);
... }while(x<6);
x:=3
x:=4
x:=5
x:=6
undefined
>
Ctrl + C退出循环或者当前终端;
> a * b
30
> var c = _
undefined
> console.log(c)
30
下划线(_)变量
可以使用下划线(_)获取表达式的运算结果↑二、事件循环
这个小demo差点成为我的瓶颈(想想也很可笑的,居然这样了,习惯太差)
//引入 events 模块
//var events = require('events');
////创建 eventEmitter 对象
////var eventEmitter = new events.EventEmitter();
var eventEmitter = new (require('events')).EventEmitter();
//////创建 eventEmitter 对象
//var eventEmitter = new events.EventEmitter();
////绑定事件及事件的处理程序
//eventEmitter.on('eventname',eventHandler);
////触发事件
//eventEmitter.emit('eventname');
//创建事件处理程序
var connectHandler = function connected(){
console.log('第①步--连接成功!');
//触发事件 data_received
eventEmitter.emit('data_received');
var x = 5,y = 3;
console.log("第③步--"+(x+y));
}
兰青色部分必须之前定义
//绑定 connection 事件处理程序
eventEmitter.on('connection',connectHandler);
//使用匿名函数绑定 data_received事件
eventEmitter.on('data_received',function(){
console.log("第②步--数据接收成功!");
})
//触发 connection 事件
eventEmitter.emit("connection");
console.log("第④步--events over!");
E:\node>node main.js
first--cuccess��
second--data success��
third--8
forth--events over!
E:\node>node main.js
第①步--连接成功!
第②步--数据接收成功!
第③步--8
第④步--events over!
var events = require("events"); //注意是events,注意s第二个错误
var emitter = new events.EventEmitter();
emitter.on('someEvent',function(arg1, arg2){
console.log('listener1', arg1, arg2);
});
emitter.on('someEvent', function(arg1, arg2){
console.log('listener2', arg1, arg2);
});
emitter.emit('someEvent', 'arg1 参数', 'arg2 参数');
E:\node\event.js:11 注意封号
emitter.emit('someEvent', 'arg1 鍙傛暟'锛?'arg2 鍙傛暟')锛?
^
SyntaxError: Unexpected token ILLEGAL
at Module._compile (module.js:439:25)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3
E:\node>node event.js
module.js:340
throw err;
^
Error: Cannot find module 'event'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (E:\node\event.js:2:13)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
E:\node>node event.js
listener1 arg1 参数 arg2 参数
listener2 arg1 参数 arg2 参数
E:\node>
相关文章推荐
- 即时通讯之Socket.IO的学习,及使用nodejs 搭建websocket 聊天室
- LeetCode - Populating Next Right Pointers in Each Node II
- nodejs系列(一)安装和介绍
- hadoop2解决 NameNode 单点故障问题的 高可用集群配置
- nodesj中 中间件express-session的理解
- LeetCode - Populating Next Right Pointers in Each Node
- nodejs path
- nodejs关于session和cookie的问题
- 记一次DataNode慢启动问题
- Node.js基础学习
- node.js初识
- 解决Postman发送post数据但是Node.js中req.body接收不到数据的问题
- [Mac]解决Yosemite下iNode客户端上网问题
- [leetcode] 117. Populating Next Right Pointers in Each Node II 解题报告
- 用Node操作Firebird。
- Node.js_全局对象
- hadoop多次格式化后导致VERSION不一致,启动namenode和datanode时报错的解决方法
- nodejs Tips7
- Hello NodeJS
- 汇智网node学习笔记