异步操作
-Node采用chrome v8 引擎处理javascript脚本
--v8最大特点就是单线程运行,一次只能运行一个任务
-Node大量采用异步操作
--任务不是马上执行,而是插在任务队列的尾部,等前面的任务运行完成后坐在执行
-提高代码的响应能力
回调函数设计
-对于一个函数如果需要定义回调函数
--回调好函数一定作为参数的最后一个参数出现
---function demo1(arg1,arg2,callback){}
---function demo2(arg1,callback1,callback2){}
--回调函数的第一个参数默认接受错误信息,第二个参数才是真正的回调数据(便于外界回去调用的错误情况)
---demo1(arg1,arg2,function(error,data){
if(error) throw error;
console.log(data);
});
--错误优先的回调函数
---约定将错误信息作为回调的第一个参数,第一个参数为上一步的错误信息
---因为之后的操作大多数都是异步的方式,无法通过try catch捕获异常

强调错误优先
-node大多数都是异步的操作方式,无法通过try catch捕获异常
-错误优先的回调函数
--第一个参数为上一步的错误信息
回调函数的问题>相对于传统代码
-不容易阅读
-不容易维护
-不容易调试
-回调黑洞
--解决方法:promise等

演示代码:
function isEvenOrOdd(number,callback) {
if (typeof number === 'number') {
if (number % 2) {
callback(null,'number is even');
}else{
callback(null,'number is odd');
}
} else {
//throw new Error('input not number -- throw');
callback(new Error('input not number -- callback'));
}
}
isEvenOrOdd(2,(error,data) =>{
if(error) throw error;
console.log(data);
});

isEvenOrOdd(3,(error,data) =>{
if(error) throw error;
console.log(data);
});

isEvenOrOdd('myString',(error,data) =>{
if(error) throw error;
console.log(data);
});

什么是异步?
-日常生活中
--打电话
--发短信
-程序世界中
--setTimeout()
--$.ajax()
--文件操作
--Node所有的会发生阻塞的操作都是异步
-归根结底,所有需要异步的操作都是基于'网络操作'和'磁盘操作'做两个方面的。
什么是I/O?
-简单理解就是输入到输出之间的转化过程

Node笔记四的更多相关文章

  1. Java IO学习笔记四:Socket基础

    作者:Grey 原文地址:Java IO学习笔记四:Socket基础 准备两个Linux实例(安装好jdk1.8),我准备的两个实例的ip地址分别为: io1实例:192.168.205.138 io ...

  2. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  3. 《MFC游戏开发》笔记四 键盘响应和鼠标响应:让人物动起来

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9327377 作者:七十一雾央 新浪微博:http:// ...

  4. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  5. java之jvm学习笔记四(安全管理器)

    java之jvm学习笔记四(安全管理器) 前面已经简述了java的安全模型的两个组成部分(类装载器,class文件校验器),接下来学习的是java安全模型的另外一个重要组成部分安全管理器. 安全管理器 ...

  6. Java学习笔记四---打包成双击可运行的jar文件

    写笔记四前的脑回路是这样的: 前面的学习笔记二,提到3个环境变量,其中java_home好理解,就是jdk安装路径:classpath指向类文件的搜索路径:path指向可执行程序的搜索路径.这里的类文 ...

  7. Java加密与解密笔记(四) 高级应用

    术语列表: CA:证书颁发认证机构(Certificate Authority) PEM:隐私增强邮件(Privacy Enhanced Mail),是OpenSSL使用的一种密钥文件. PKI:公钥 ...

  8. Learning ROS for Robotics Programming Second Edition学习笔记(四) indigo devices

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  9. Typescript 学习笔记四:回忆ES5 中的类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

随机推荐

  1. TCP三次握手及其背后的缺陷

    概述 总结一下TCP中3次握手过程,以及其原生的缺陷 引起的SYN Flood的介绍 [1]TCP三次握手 [2]SYN Flood 1.TCP连接建立--三次握手 几个概念: [1]seq:序号,占 ...

  2. JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

    JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中 ...

  3. HTML5 window/iframe跨域传递消息 API

    原文地址:HTML5′s window.postMessage API 在线示例:Using HTML5's window.postMessage(请打开控制台看日志) 原文日期: 2010年09月0 ...

  4. 谈谈Ext JS的组件——布局的使用方法续一

    盒子布局 盒子布局主要作用是以水平(Ext.layout.container.HBox)或垂直方式(Ext.layout.container.VBox)来划分容器区域.这也是比较常有的布局方式. 使用 ...

  5. TCP的定时器系列 — 保活定时器

    主要内容:保活定时器的实现,TCP_USER_TIMEOUT选项的实现. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 原理 HTTP有Keepaliv ...

  6. Struts Chain ClassCastException Aop

    我们知道struts的restult type 有很多,但主要就是四种 dispatch,rediret,chain,drdirectaction 要让数据从一个action传到另一个action,就 ...

  7. 下载android5.0源码

    方法还是与之前我介绍的下载源码的方法一样,但是repo需要更新一下,否则可能会出现以下错误: type commit tag v1.12.16 tagger Conley Owens <cco3 ...

  8. (NO.00001)iOS游戏SpeedBoy Lite成形记(十一)

    之前的10篇内容主要实现了选手从起点移动至终点的动作,比较随机的模拟了选手的速度变化,另外完成了选手到达终点时该做的事情. 接下来的几篇中我们进一步完善SpeedBoy Lite项目,使它真正成为一个 ...

  9. Android官方技术文档翻译——Gradle 插件用户指南(4)

    最近赶项目,白天基本没时间,只有晚上在家的时候才能看一看.昨天晚上只翻译完了第四章,今天就只发第四章吧. 本文译自Android官方技术文档<Gradle Plugin User Guide&g ...

  10. XBMC源代码分析 1:整体结构以及编译方法

    XBMC(全称是XBOX Media Center)是一个开源的媒体中心软件.XBMC最初为Xbox而开发,可以运行在Linux.OSX.Windows.Android4.0系统.我自己下载了一个然后 ...