Node.js 的回调模式】的更多相关文章

我们都知道在javaScript中,如果在head标签里面引入script脚本,在打开web的时候,浏览器会先加载head中的信息,再加载body的信息: 如果head中有link标签,浏览器会开启一个异步线程加载link链接的外部样式(CSS),在加载CSS样式的同时,浏览器会继续往后加载,并不会等到CSS加载完: 当浏览器遇到未设置javaScript异步加载模式的script脚本的时候,浏览器会停止继续加载,也就是发生了浏览器阻塞,只有等到script脚本加载完成后才继续往后加载. 这样就…
今天闲来无事想起了node.js,因此到网上下载了一个node.js的安装程序进行安装.其中: 安装程序:node-v0.11.13-x64.msi PC系统:Windows 7 自定义安装路径:D:\TOOLS\NodeJs 安装完成后,执行: D:\TOOLS\NodeJs>node -v v0.11.13 安装框架express,从网站上下载了一个安装文档,说安装express可分全局模式和本地模式,个人觉得全局模式就是默认的没什么意思,就选择本地模式进行安装,执行: D:\TOOLS\N…
概要:本篇博客主要通过对比node.js异步与同步方式读取文件的方式来解释node中回调函数的作用. 1.异步方式读取文件: 新建一个文本文档用于测试,如下图: 代码如下: // node异步方式读取文件 var fs = require('fs'); fs.readFile('input.txt','utf-8',function(err,data){ if (err) { console.error(err); } else { console.log(data); } }); consol…
在iOS中我们经常用到单利模式,这样就能够实现在多处共享同一数据,那么在Node.js中也存在这种模式. 我们知道,Node.js中模块的概念很重要,在写模块的接口的时候,只需要暴露出一个实例对象就能实现单利模式. 这依赖于模块加载的缓存机制,在这篇文章中我给出了说明.Node.js之循环依赖 我们先看看一个简单的logger模块的代码: class Logger { constructor(name) { this.name = name; this.count = 0; } log(mess…
学习链接:http://www.runoob.com/nodejs/nodejs-callback.html Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都支持回调函数. 这样在执行代码时就没有阻塞或等待文件 I/O 操作.这就大大提高了 Node.js 的性能,可以处理大量的并发请求. 阻塞代码实例 创建一个文件 input.txt ,内容如…
/* 从网站 https://nodejs.org/zh-cn/ 下载 这里用的 9.4.0 版本 下载完安装 安装目录是 D:\ApacheServer\node 一路默认安装 安装后打开cmd命令行输入 path 在显示的结果中查找是否有 D:\ApacheServer\node\ 有的话表示环境变量中已经包含了 D:\ApacheServer\node\ 可以在cmd中直接使用 node 这个命令 如在当前命令行中输入 node --version 显示 v9.4.0 当前nodejs的版…
html文件代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>我的node.js首页</title> </head> <body> </body> </html> 通过buffer流读取html文件 var fs = require('fs'); fun…
为了解决这个阻塞问题,JavaScript严重依赖于回调,这是在长时间运行的进程(IO,定时器等)完成后运行的函数,因此允许代码执行经过长时间运行的任务. downloadFile('example.com/weather.json', function(err, data) { console.log('Got weather data:', data); }); 但是,问题来了,回调地狱 虽然回调的概念在理论上是巨大的,但它可能导致一些真正令人困惑和难以阅读的代码. 想象一下,如果你需要在回…
回调例程 N所有API都支持回调函数,可以处理大量并发请求.回调函数一般作为最后一个参数出现: function foo1(name, age, callback){ } function foo2(value, callback1, callback2){ } 阻塞代码 1 创建文件input.txt $ vim input.txt 2 输入 Hello World! 3 创建main.js文件 $ mkdir main.js 4 输入main.js内容 var fs = require("f…
最近在看 express,满眼看去,到处是以函数作为参数的回调函数的使用.如果这个概念理解不了,nodejs.express 的代码就会看得一塌糊涂.比如: 复制代码 代码如下: app.use(function(req, res, next) {     var err = new Error('Not Found');     err.status = 404;     next(err); }); app是对象,use是方法,方法的参数是一个带参的匿名函数,函数体直接在后面给出了.这段代码…
有这样一个情景,当我们弹出一个 prompt的时候,要求用户在文本框输入一个文字,然后点击确认,就可以拿到返回值 var temp=prompt("请输入您的名字");     alert(temp) 比较简单,那么如果是我们自己手动写一个弹出层,层里面一个文本框,然后点击确认的时候,怎么返回这个文本框的值呢? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/…
//导入内置模块 let EventEmitter = require('events'); let util=require('util'); //Man继承EventEmitter util.inherits(Man,EventEmitter); //创建一个函数 function Man(){} //实例化函数 let man=new Man(); function findGirl() { console.log('找新的女朋友') } function saveMoney() { co…
异步IO     在操作系统中,程序运行的空间分为内核空间和用户空间.我们常常提起的异步I/O,其实质是用户空间中的程序不用依赖内核空间中的I/O操作实际完成,即可进行后续任务. 同步IO的并行模式 多线程单进程 多线程的设计之处就是为了在共享的程序空间中,实现并行处理任务,从而达到充分利用CPU的效果.多线程的缺点在于执行时上下文交换的开销较大,和状态同步(锁)的问题.同样它也使得程序的编写和调用复杂化. 单线程多进程     为了避免多线程造成的使用不便问题,有的语言选择了单线程保持调用简单…
首先关于node.js的学习,这里推荐一本比较好的教程,nodejs web开发指南,该书通俗易懂地将node.js语言特性讲解完之后,又从一个项目角度带领读者使用node.js学习web开发.相信这是一个比较好的学习模式和过程.由于这本书是2012年出的,书中的一个web教学项目是开发一个微博.从2012到现在,node.js及其生态环境发生了很大改变,所以关于该书的学习如果照着书本显然是过于陈旧的.到目前为止,node.js的web开发框架已经升级到了Express4.12.1,对于Mong…
基于Node.js的强大爬虫 能直接发布抓取的文章哦 基于Node.js的强大爬虫能直接发布抓取的文章哦!本爬虫源码基于WTFPL协议,感兴趣的小伙伴们可以参考一下 一.环境配置 1)搞一台服务器,什么linux都行,我用的是CentOS 6.5: 2)装个mysql数据库,5.5或5.6均可,图省事可以直接用lnmp或lamp来装,回头还能直接在浏览器看日志: 3)先安个node.js环境,我用的是0.12.7,更靠后的版本没试过: 4)执行npm -g install forever,安装f…
转载原文:http://www.csdn.net/article/2013-08-28/2816731-absolute-beginners-guide-to-nodejs Node.js的教程并不缺乏,但有大部分教程针对已有Node.js基础的开发者.“我已下载了Node.js,可我如何开始呢?”以下教程是专门针对Node.js初学者,文中将通过实例分享,一步步教你如何开始Node.js之旅. 什么是Node.js? 很多初学者并没有真正地理解Node.js到底是什么.nodejs.org网站…
本文首发在个人博客:http://muyunyun.cn/posts/7b9fdc87/ 提到 Node.js, 我们脑海就会浮现异步.非阻塞.单线程等关键词,进一步我们还会想到 buffer.模块机制.事件循环.进程.V8.libuv 等知识点.本文起初旨在理顺 Node.js 以上易混淆概念,然而一入异步深似海,本文尝试基于 Node.js 的异步展开讨论,其他的主题只能日后慢慢补上了.(附:亦可以把本文当作是朴灵老师所著的<深入浅出 Node.js>一书的小结). 异步 I/0 Node…
Node.js感悟 一.前言 很久以前就对node.js十分的好奇和感兴趣,因为种种原因没能去深入的认识了解和学习掌握这门技术,最近正好要做一些项目,其中就用到了node.js中的一些东西,所以借着使用的时间来对node.js进行一些剖析,每一种语言都有自己的理念和设计初衷,但是万变不离其宗,最终还是要归结到编译和执行,对于一门新的语言,我们不要急着去记忆语法,最好的方式就是通过问题的形式去不断的积累经验,自然而然的那些语法,特殊思想就渐渐地熟能生巧了,万事开头难,任何东西到了一定的程度之后都是…
前两天公司一哥们写了一段node.js代码发给我,后面特意提了一句“写的不太优雅”.我知道,他意思是回调嵌套回调,因为当时比较急也就没有再纠结.然而内心中总记得要解决这个问题.解决node.js的回调金字塔问题有较多方法,在<深入浅出node.js>这本书中介绍了好几种,有事件发布/订阅模式.Promise模式.async库等.其中Promise模式被很多人推崇,实现的库有很多,本着从众的原则,闭着眼睛选个bluebird吧. 然而bluebird的文档并不咋滴,相当不咋滴!网上的例子基本上都…
一.Web 模块 1.http 请求(client.js) var http = require('http'); // 用于请求的选项 var options = { host: 'localhost', port: '8080', path: '/index.html' }; // 处理响应的回调函数 var callback = function(response){ // 不断更新数据 var body = ''; response.on('data', function(data) {…
Node.js是什么 Node.js是一个可以允许我们在服务器端运行JavaScript代码的程序. 这是什么意思呢?通常,我们写的JavaScript代码都是在浏览器中运行的. 实际上,浏览器就是一个JavaScript运行时环境,用于解释执行js代码. 更进一步地说,虽然浏览器提供了JavaScript运行时环境,但是它处在客户端,也就是说此时JavaScript只能用于编写前端代码. 但是,由于Node.js的出现,JavaScript代码的执行就不会被局限于在客户端,我们同样可以让Jav…
背景:因为appium是基于Node.js的,所以想看一下Node.js.但是发现很多资料的顺序看起来有点颠倒.然后就一面看资料一面整理了一下大概的知识点框架,希望对自己对别人有用. 本文不包含node.js的基本语法.node.js的基本语法和JavaScript基本一样,可以以后再单独整理一份基本语法的.   Node.js是一个基于chrome V8的JavaScript运行时的环境 Node.js是事件驱动,非阻塞式I/O模型 Node.js使用npm包管理器 使用Node.js不仅实现…
3.1 开始使用Node.js编程 3.1.1 Hello World 将以下源代码保存到helloworld.js文件中 console.log('Hello World!'); console.log('%s:%d', 'hello', 25); 找到文件位置,执行node helloworld.js.结果如下: 3.1.2 Node.js命令行工具 输入:node --help可以看到详细的帮助信息. 除了直接运行脚本外,node --help显示的用法中说明了另一种输出hello wor…
--原文地址:http://blog.chrisyip.im/nodejs-101-package-promise-and-async 先回想一下 Sagase 的项目结构: lib/ cli.js sagase.js Gruntfile.js package.json 上一篇讲了 package.json,这一篇讲 lib/sagase.js. 由于代码比較长,就分开一节节地讲,完整的点开 GitHub 看吧. 'use strict'; 通知编译器进入 strict mode,基本的作用是让…
error的类型nodejs 的error 一般分为四种类型: 1.标准的 JavaScript 错误,例如 EvalError.SyntaxError.RangeError.ReferenceError.TypeError 或 URIErro.2.由底层操作系触发的系统错误,例如试图打开不存在的文件.或试图使用已关闭的 socket 发送数据.3.由应用程序代码触发的用户自定义的错误.4.AssertionError 错误,当 Node.js 检测到不应该发生的异常逻辑时触发.这类错误通常来自…
Node.js的到底是用来做什么的 在阐述之前我想放一个链接,这是国外的一个大神,对于node.js非常好的一篇介绍的文章,英文比较好的朋友可以直接去阅读,本文也很大程度上参考了这篇文章,也同时感谢知乎用户厂长对于本文的翻译!原文题目为Node.js is the New Black Node.js的简介 根据维基百科对于Node.js的介绍,我们可以知道一些基本关于Node.js的情况.Node.js是瑞安·达尔(Ryan Dahl)在2009年发明出来的一种一个能够在服务器端运行JavaSc…
本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让大家见笑了. 本文我们来探索一下主流的各种应用服务器的网络处理模型,看看大家都是怎么设计网络程序的.在本文中,我会从Node.js.Apache Server.Nginx.Netty.Redis.Tomcat.MySQL.Zuul等常用的服务器程序,给大家逐一分析,分析各种服务器程序的性能,心中有数,才能手中…
1.回调函数 node是一个异步事件驱动的平台,所以在代码中我们经常需要使用回调函数. 例: setTimeout(function(){ console.log('callback is called'); },2000); 2.标准回调函数 node.js中回调函数格式是约定俗成的,它有两个参数,第一个参数为err,第二个参数为data,err是错误信息,data则是返回的数据. 例: function(err,data){ } 3.获取和使用模块 为了支持快速开发,node平台上提供了大量…
node.js的优缺点 优点: 1. 采用事件驱动,异步编程,为网络服务而设计. 2. node.js非阻塞模式的IO处理给node.js带来在相对较低的资源耗用下的高性能与出众的负载能力. 3. node.js轻量高效,可以认为是数据密集型实时应用系统的完美解决方案. 4. js语言适合前端工程师上手. 5. 社区活跃发展速度快. 缺点: 1. 单线程,单进程,只支持单核CPU,不能充分的利用多核CPU服务器. 2. 对程序员要求高一旦进程崩溃,那么整个web服务器就崩溃了. 3. 不适合做复…
守护进程 方案一 npm install forever https://github.com/foreverjs/forever 方案二 npm install -g supervisor http://www.cnblogs.com/pigtail/archive/2013/01/08/2851056.html 被吐嘈的NodeJS的异常处理 许多人都有这样一种映像,NodeJS比较快: 但是因为其是单线程,所以它不稳定,有点不安全,不适合处理复杂业务: 它比较适合对并发要求比较高,而且简单…