node.js
node.js的介绍
-
运行在服务器的JS
-
用来编写服务器
-
特点:
-
单线程、异步、非阻塞
-
统一API
-
##同步与异步
进程和线程
-
进程 (厂房)
- 程序的运行环境
-
线程 (工人)
- 线程是实际进行运算的东西
-
同步
- 通常情况代码都是自上向下一行一行执行的
- 前边的代码不执行后边的代码也不会执行
- 同步的代码执行会出现阻塞的情况
-
解决同步问题
- java python
- 通过多线程解决 - node.js
- 通过异步方式解决
- java python
-
异步
一段代码的执行不会影响其他代码的执行-
异步的问题:
异步的代码无法通过return接收返回值 -
特点:
-
不会阻塞其他代码的执行
- 需要通过回调函数来返回结果
-
-
基于回调函数的异步带来的问题
1. 代码的可读性差
2. 可调试性差 -
解决问题:
- 需要一个东西,可以代替回调函数来给我们返回结果- Promise横空出世 Promise是一个可以用来存储数据的对象 Promise存储数据的方式比较特殊,这种特殊方式使得Promise可以用来存储异步调用的数据
-
-
现实生活
1.点菜
2.厨师做菜
3.吃
进程和线程
- 进程就是一个内存空间,是程序运行的环境,程序运行需要进程
- 线程是实际进行运算的东西,也就是程序要真正运行起来需要线程
- 线程会进入到进程里运行
node.js 和 JavaScript有什么区别?
-
node和JS的标准是一样的,遵循的都是ECMAScript
-
DOM BOM 是浏览器独有的,node没有DOM BOM
同步和同步的问题解决
参考: https://www.lilichao.com/index.php/2022/10/10/%e5%bc%82%e6%ad%a5%e7%bc%96%e7%a8%8b/
-
什么是同步:
-
通常情况代码都是自下而上一行一行按顺序执行的,执行完第一行再执行第二行依次执行,如果前面的代码不执行,后面的代码也不会执行,这就是同步.
-
同步的代码执行会出现阻塞的情况,一行代码执行得慢会影响整个程序的执行
console.log("哈哈") console.log("嘻嘻") console.log("嘿嘿")
-
-
同步阻塞问题的解决:
-
Java 和 python: 通过多线程来解决阻塞问题,对计算机和编程的要求较高
-
node.js:通过异步方式来解决这一问题. 执行速度慢的代码不影响真个程序.
-
异步
-
什么是异步?可理解为一段代码的执行不会影响到其他的程序
-
异步的问题:异步代码的执行结果无法通过return获得
-
异步的特点:
-
不会阻塞其他代码的执行
-
需要通过回调函数来返回结果
-
-
基于回调函数的异步带来的问题:
-
代码的可读性差
-
代码的可调试性差
-
产生回调地狱的问题
-
-
解决回调地狱的问题
-
需要一个可以代替回调函数来给我们返回结果的东西
-
这个东西就是promise
-
promise是一个可以用来存储数据的对象,它存储数据的方式比较特殊,取数据的方式也比较特殊
-
这种特殊方式使得promise可以用来存储异步调用的数据
-
promise就是可以存储异步代码的对象
-
-
function sum(a,b,cb){ // cb是一个回调函数
const begin = Date.now()
setTimeout(()=>{
cb(a + b)
},1000)
}
console.log("1111111")
sum(123, 456,()=>{
console.log(result)
})
console.log("222222")