nj08---process、console
概念:所有属性都可以在程序的任何地方访问,即全局变量。在JavaScript中,通常window是全局对象,而Node.js的全局对象是global,所有全局变量都是global对象的属性,如:console、process等。 一、全局对象与全局变量
global最根本的作用是作为全局变量的宿主。满足以下条件成为全局变量:
1.在最外层定义的变量
2.全局对象的属性
3.隐式定义的变量(未定义直接赋值的变量)
在Node.js中不可能在最外层定义变量,因为所有用户代码都是属于当前模块的,而模块本身不是最外层上下文。 二、process
它用于描述当前Node.js进程状态的对象。提供了一个与操作系统的简单接口,通常写本地命令行程序的时候,会用到它。
1.process.argv是命令行参数数组,第一个元素是node,第二个元素是脚本文件名,第三个元素开始每个元素是一个运行参数。console.log(process.argv);
/*node argv.js '11' '22' 33 oo
输出:node.exe
argv.js
'11'
'22'
33
'oo'*/
2.process.stdout是标准输出流,进入node环境,通常我们使用的console.log() 其底层是用 process.stdout.write();实现。
3.prcess.stdin是标准输入流,初始时它是被暂停的。要想从标准输入流读取数据,必须恢复流,并手动编写流的事件相应函数。//恢复流
process.stdin.resume();
process.stdin.on('data',function(data){
process.stdout.write('read from console'+data.toString());
})
//node stdin.js 然后输入,可以一直输入
4.process.nextTick(callback)的功能是为事件循环设置一项任务。Node.js会在下次事件循环调响应时调用callback
Node.js适合IO密集型的应用,而不是计算密集型的应用。process.nextTick()提供了一个这样工具,可以把复杂的工作拆散,成较小的事件去执行。 function doSomething(args,callback){
somethingComplited(args);
callback();
}
doSomething('12345',function onEnd(){
compute();
})
如果假设compute()和somethingComplited()是两个较为耗时的函数。以上的程序在调用doSomething时会先执行somethingComplited(args),然后立即调用回调函数,在onEnd()中又会执行compute(),改写为: function doSomething(args,callback){
somethingComplited(args);
process.nextTick(callback);
}
使用process.nextTick()后,改写后的程序会把上面耗时的操作拆分为两个事件,减少每个事件的执行时间,提高事件相应速度。function compute(){
console.log("I am is cpmpute method");
}
function somethingComplited(args){
console.log("I am is somethingComplited method");
console.log(args);
}
//function doSomething(args,callback){
// somethingComplited(args);
// callback();
//}
function doSomething(args,callback){
somethingComplited(args);
process.nextTick(callback);//这个方法是异步执行
}
doSomething('12345',function onEnd(){
compute();
}) 5.process其他方法:process.platform()、process.pid()、process.execPath()、process.memoryUsage()等方法。。。
API链接:http://nodejs.org/api/process.html 二、console
java中的log4j的 Logger logger=new Logger(Object.class);
logger.info
logger.error
logger.debug 用于提供控制台标准输出,Node.js沿用了这个标准,提供与习惯行为一直的console对象。
1.console.log().向标准输出流打印字符并以换行符结束。
使用案例:
console.log("hello");
console.log("hello%marico");
console.log("hello%marico"," Mr. ");
2.console.error();用法与console.log()相同,只是向标准错误流输出。
3.console. trace();向标准错误六输出当前的调用栈
console.log("hello");
console.log('hello%marico');
console.log('hello%marico',1991,'yfc');
console.error('error!');
console.trace('this is a error');
/*
hello
hello%marico
hello%marico 1991
*/
nj08---process、console的更多相关文章
- Chrome开发者工具详解(1)-Elements、Console、Sources面板
Chrome开发者工具详解(1)-Elements.Console.Sources面板 Chrome开发者工具面板 面板上包含了Elements面板.Console面板.Sources面板.Netwo ...
- EF异常:WebForm、Console、Winform层不引入EF报错
WebForm.Console.Winform层可以不引入EntityFramework,但必须引入EntityFramework.SqlServer,否则运行时会报错
- Chrome开发者工具详解(1):Elements、Console、Sources面板
Chrome开发者工具面板 面板上包含了Elements面板.Console面板.Sources面板.Network面板. Timeline面板.Profiles面板.Application面板.Se ...
- console.log()、console.info()、console.debug()的区别
onsole.log().console.info().console.debug()的作用都是在浏览器控制台打印信息的. 使用最多的是console.log().console.info()和con ...
- Chrome开发者工具详解(四)之Elements、Console、Sources面板
Elements面板 实时编辑DOM节点和CSS样式 双击DOM树视图里面的节点,可以实时编辑标签属性,修改的效果会立刻反应在浏览器里 点击右侧Style面板,可以实时修改CSS的属性值,这里面的所有 ...
- node源码详解(三)—— js代码在node中的位置,process、require、module、exports的由来
本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource3 本博客同步在https://cnodejs.o ...
- JS里try...catch...finally详解,以及console日志调试(console.log、console.info等)
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- Python笔记-进程Process、线程Thread、上锁
1.对于操作系统来说,一个任务就是一个进程(Process).比如打开一个浏览器就是启动一个浏览器进程,打开一个记事本就启动了一个记事本进程. 2.在一个进程内部,要同时干多件事,就需要同时运行多个“ ...
- Java进程Runtime、Process、ProcessBuilder调用外部程序
原文地址:https://blog.csdn.net/c315838651/article/details/72085739 通过Java执行系统命令,与cmd中或者终端上一样执行shell命令,最典 ...
随机推荐
- Ubuntu 安装wps-office
本系列文章由 @YhL_Leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/50288483 本人的ubuntu系统是 ...
- oracle用户锁定
https://www.cnblogs.com/lostyue/archive/2011/12/06/2278063.html
- ASP.NET-常用插件集合
001.输入表单验证插件FluentValidation ( 这个组建可以直接验证实体类,达到和验证model相同的效果,如果类很少可以直接使用这个省去model) https://github.co ...
- nodeJS npm grunt grunt-cli
1.安装好nodeJS后 ,一般都会把npm也安装好的.nodeJs集成npm的,可通过在cmd 分别运行 node -v和 npm -v来查看他们的版本,假设显示可说明可继续以下的操作 2.想安装g ...
- nmq 提交到 npm
安装npm install nmq 源码:https://github.com/ronwe/nmq 此版本提供 pub/sub , 优化 pull
- CCFlow的excel数据源导入Dtl明细表的操作方法以及模版demo
CCBPM支持通过excel向Dtl明细表(从表)导入数据. 以下,我们以cc的財务报销单demo流程解说详细的操作步骤和模版设计. 导入的操纵步骤: 1.流程发起后,在開始节点导入数据源,点击明细表 ...
- SSH公钥认证
一.实验的目的 了解密钥对的创建和使用,掌握免password远程登录和远程操作 二.实验环境 本地主机 rh1: 192.168.233.3/24 远程主机 rh2: 192.168.233.4/2 ...
- 解决django.db.utils.InternalError: (1049, "Unknown database 'exam_db'")
先检查seeting数据库配置DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'eaxm_db', ' ...
- (转载)你真的理解Android AIDL中的in,out,inout么?
前言 这其实是一个很小的知识点,大部分人在使用AIDL的过程中也基本没有因为这个出现过错误,正因为它小,所以在大部分的网上关于AIDL的文章中,它都被忽视了——或者并没有,但所占篇幅甚小,且基本上都是 ...
- 51nod 1445 变色DNA ( Bellman-Ford算法求单源最短路径)
1445 变色DNA 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有一只特别的狼,它在每个夜晚会进行变色,研究发现它可以变成N种颜色之一,将这些颜色标号为0,1 ...