博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node笔记四
阅读量:5128 次
发布时间:2019-06-13

本文共 1355 字,大约阅读时间需要 4 分钟。

异步操作

-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?
-简单理解就是输入到输出之间的转化过程

 

转载于:https://www.cnblogs.com/nordon-wang/p/6038778.html

你可能感兴趣的文章
初入linux系统
查看>>
程序员放松的8个好网站推荐
查看>>
解释Crypto模块怎么就这么"皮"?No module named "Crypto"
查看>>
bzoj 1609[Usaco2008 Feb]Eating Together麻烦的聚餐【dp】
查看>>
bzoj 4552: [Tjoi2016&Heoi2016]排序【二分+线段树】
查看>>
nodejs安装
查看>>
解决chrome浏览器在win8下没有注册类的问题
查看>>
vue学习二:
查看>>
在IIS上部署的网站,本机无法浏览解决方法
查看>>
JS报表控件highcharts应用
查看>>
rsync服务器间文件的传输
查看>>
Java(6)for循环
查看>>
Redis数据结构之简单动态字符串SDS
查看>>
CentOS7 查看硬盘情况
查看>>
WPF-3D动效-文字球形环绕
查看>>
Asp.Net Core 轻松学-利用xUnit进行主机级别的网络集成测试
查看>>
ToList()所带来的性能影响
查看>>
WPF 4 日期选择器(DatePicker)
查看>>
20几个正则常用正则表达式
查看>>
TextArea中定位光标位置
查看>>