异步操作
-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. Java创建二叉搜索树,实现搜索,插入,删除操作

    Java实现的二叉搜索树,并实现对该树的搜索,插入,删除操作(合并删除,复制删除) 首先我们要有一个编码的思路,大致如下: 1.查找:根据二叉搜索树的数据特点,我们可以根据节点的值得比较来实现查找,查 ...

  2. Socket层实现系列 — connect()的实现

    主要内容:connect()的Socket层实现.期间进程的睡眠和唤醒. 内核版本:3.15.2 我的博客:http://blog.csdn.net/zhangskd 应用层 int connect( ...

  3. android studio中使用lambda

    环境准备 如果还没有安装Java 8,那么你应该先安装才能使用lambda和stream(译者建议在虚拟机中安装,测试使用). 像NetBeans 和IntelliJ IDEA 一类的工具和IDE就支 ...

  4. ZooKeeper实现命名服务

    使用场景  命名服务就是提供名称的服务,Zookeeper的命名服务有两个应用方面.一个是提供类似JNDI功能,另一个是制作分布式的序列号生成器.         JNDI功能,我们利用Zookeep ...

  5. C++对象模型(三):Program Transformation Semantics (程序转换语义学)

    本文是Inside The C++ Object Model Chapter 2 部分的读书笔记.是讨论编译器调用拷贝构造函数时的策略(如何优化以提高效率),侯捷称之为"程序转化的语义学&q ...

  6. HTML5 移动开发入门知识点

    转自:http://www.cnblogs.com/blog-zwei1989/archive/2012/12/12/2815049.html 1.先来看淘宝无线wiki要求在页面中添加的meta标签 ...

  7. Dynamics CRM Odata QueryUrl中的SetName问题

    用javasrcipt通过odata方式访问组织服务进行CRUD操作时,queryurl的正确拼接很关键. 以下面的url为例:"XX/XRMServices/2011/Organizati ...

  8. LeetCode之“链表”:Remove Duplicates from Sorted List && Remove Duplicates from Sorted List II

    1. Remove Duplicates from Sorted List 题目链接 题目要求: Given a sorted linked list, delete all duplicates s ...

  9. AndFix使用感想

    AndFix已经使用了一段时间了,但是到AndFix上看了一下,最近2个月都没有更新代码了,有141个issues和3个pull request没人处理,其实AndFix的Contributors就俩 ...

  10. Android驱动中的Kconfig文件与Makefile文件

    内核源码树的目录下都有两个文档Kconfig(2.4版本是Config.in)和Makefile.分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文 ...