Node.js以及异步编程
什么是服务器?我们知道客户端通过访问服务器,然后服务器去操作数据库把我们想要的数据拿过来给客户端。比如服务器就是餐厅的服务员,数据库就是厨房,客户端就是我们的顾客。首先我们点菜,服务器告诉厨师做饭,然后把饭给我们。这样我们就大致知道了服务器是做什么的。就是一个线程的容器为我们提供服务。
Node.js是运行在服务器的js用来编写服务器。
这里是java编写服务器和nodejs的不同,nodejs的特点1.单线程2.异步3.非阻塞4.统一API .
I/O指的是input ouput 输入输出不会被阻塞,就是并行服务员一直接新订单。统一API是前后端都用js写。都遵循ECMAScript语法(流程控制语句 函数对象运算符一致)也保留了部分console.log调试语句。
1.Nvm 的安装以及命令
nvm是一个管理Node.js多版本的工具可以轻松切换不同项目所需的Node.js版本避免全局冲突。
这里一些简单的命令
2.怎么用node
1.直接在终端输入node
就可以直接写js代码了
2.在根目录下用node 文件名
或者用快捷键 fn+f5(mac) 这样就可以调试我们写的node.js代码了。
3.异步编程
首先理解同步和异步直接先插入一个概念,进程和线程。
进程:程序运行的环境(工厂的厂房计算机内存给代码留的内存空间)
线程(工人)线程是实际进行运算的东西在进程里面运算。
同步和异步
通常情况下我们的代码是一行行执行如果前面代码不执行后面的代码也不会执行。如果同步的代码出现阻塞的情况,一行代码慢会影响整个程序的运行。
为了解决同步的问题。node.js通过异步方式来解决。执行代码速度慢的代码不会影响其他代码。
比如这种代码,我们后面的输出都需要等sum函数执行完三秒后才可以运行。我们如果用异步去解决的话。
我们发现一个问题异步好像就拿不到result返回值了 ,因为我们同步输出了result这时候没有拿到result这就很难受了,我们怎么才能拿到值呢?我们可以用回调函数来解决。
我们这里用回调函数然后作为参数来获取我们a+b的值然后输出,如果我们希望加好几次呢?就需要去在回调函数里面拿到result之后再去拿当前的result作为参数再次调用sum函数。
就会出现这样代码的可读性差,可调试性差也是我们说的回调地狱。
现在我们知道我们用异步解决了所谓的同步代码会因为一行代码影响程序执行,但是异步的话我们就无法通过return设置返回值。虽然不会阻塞代码,但是需要回调函数的参数来返回结果。形成回调地狱。
为了解决这个问题,Promise横空出世 Promise用来存储异步调用的数据