node.js:回调函数

node.js:回调函数

1、什么是回调?

node.js异步编程的直接体现就是回调,回调函数在完成任务后就会被回调。所以我们先来了解一下以下的内容。然后再来看回调函数。

function exam(thing) {
 	console.log(thing);
 }

 function names(callback, thing) {
 	thing +=' is a good name';
 	callback(thing);
 }

names(exam, 'cheng');
这里callback是一个函数,我们把exam这个函数传进去。

2、什么是同步异步?

举个例子来说:假设你在餐馆打工,当来了一批客人时,你会在旁边等待着客人点餐,可是这次来的客人很纠结,他一直选不定菜品,你只能一直在旁边等着,这就是同步,在上一个步骤没有完成时,不能进行下一个步骤。这时,这个客人说,我们先不点餐,等选好了通知你,这时你就可以去招待别的客人,等待客人的通知。这就是异步。

同步:客户端向服务器端提交请求----等待服务器的处理----服务器处理完后返回(如果服务器处理的时间很久很久,那这个时候客户端的浏览器也只能一直等着,不能进行其他的事情)

异步:客户端向服务器端提交请求----等待服务器的处理----服务器处理完后返回(如果服务器处理的时间很久很久,那这个时候客户端的浏览器可以进行其他的事情)

同步和异步的区别:数据访问的时候,进程是否阻塞。

3、什么是IO?

IO(input、output)谁输出

4、什么是单线程/多线程?

单线程就是进程只有一个线程

多线程就是进程有多个线程。

5、什么是阻塞/非阻塞?

阻塞是按顺序执行的,非阻塞是不需要按顺序执行的。刚开始了解了同步、异步和阻塞、非阻塞之后,我认为这两个概念是相同的,但其实是不同的。

同步、异步主要针对客户端,但是也需要服务器端的配合,但不需要关心服务器端是否阻塞。阻塞、非阻塞主要针对服务器端。

阻塞与非阻塞的区别:应用程序的调用是否立即返回。

例子:

阻塞:

创建一个文件input.txt,里面的内容是:我叫程小秋

创建文件server.js

var fs = require("fs");

var data = fs.readFileSync('input.txt');

console.log(data.toString());
console.log("程序执行结束!");
结果:我叫程小秋

            程序执行结束!

这个例子在文件读取完后才执行完程序

非阻塞:

创建一个文件input.txt,里面的内容是:我叫程小秋

创建文件server.js

var fs = require("fs");

fs.readFile('input.txt', function (err, data) {
    if (err) 
    	return console.error(err);
    console.log(data.toString());
});

console.log("程序执行结束!");
结果:程序执行结束!

            我叫程小秋
这个例子在读取文件的同时可以继续执行接下来的内容。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值