进程和线程:
进程(厂房):
程序运行的环境。
- 进程里面包含多个线程
线程(工人):
- 线程就是实际运行运算的东西。
同步:
- 通常情况代码都是自上而下一行一行执行的
- 前边的代码不执行后边的代码也不会执行
- 同步的代码执行会出现阻塞的情况
- 一行代码执行慢会影响到整个程序的执行
解决同步问题:
java python:
- 通过多线程来解决,创建多个线程
node.js:
- 通过异步方式来解决
function sum(a,b,cb) {
const begin = Date.now();
setTimeout(() => {
cb(a+b)
},10000)
}
const result = sum(123,456 (result) => {
console.log(result)
})
console.log("node.js异步实现")
异步
- 一段代码块的执行不会影响到其他的程序
异步的问题:
- 异步的代码无法通过return来设置返回值
特点:
- 不会阻塞其他代码的执行
- 需要通过回调函数来返回结果
现实生活中:
- 点菜
- 厨师做菜
- 吃
function sum(a,b,cb) {
setTimeout(() => {
cb(a+b)
},10000)
}
//要在原计算结果再进行计算
//死亡回调函数
const result = sum(3,8,(result) => {
sum(result,777,(result) => {
sum(result,178,(result) => {
sum(result,188,(result) => {
console.log(result)
})
})
})
})
基于回调函数的异步带来的问题:
- 代码可读性差
- 可调试性差
解决问题:
- 需要一个东西,可以代替回调函数来给我们返回结果
- Promise横空出世
- 1. Promise是一个可以用来存储数据的对象
- 2. Promise 存储数据的方式比较特殊
- 3. 这种特殊方式使得Promise可以用来存储异步调用的数据