1.进程和线程的区别
进程是程序的一次执行过程,是一个动态概念,是程序在执行过程中分配和管理资源的基本单位
线程是CPU调度和分派的基本单位,它可与同属于一个进程的其他线程共享进程所拥有的全部资源。
1.一个程序至少有一个进程,一个进程至少有一个线程
2.线程的划分尺度小于进程,使得多线程程序的并发性高
3.进程之间内存无法共享。多个线程执行可以共享内存
4.线程不能独立运行,必须依存在进程中
2.js异步编程
因为js是单线程的,所以js的代码都是串行的,前面没有执行完后面的就不能执行
js的单线程,与它的用途有关:作为浏览器脚本语言,js的主要用途是与用户互动以及操作DOM,这决定了它只能是单线程的,否则会带来很复杂的同步问题
除了“事件绑定的函数”和“回调函数”以外都是同步代码
程序执行顺序:程序运行会从上往下依次执行所有的同步代码,在执行过程中如果遇到异步代码会先将异步代码放到事件循环中,当所有的同步代码执行完毕后,js会不断检测事件循环中的异步代码是否满足条件,一旦满足条件就会执行满足条件的异步代码。
在开发中为了保障异步代码的执行顺序,那么就会出现回调函数层层嵌套,如果嵌套的层数过多,就会导致代码的阅读性、可维护性大大降低
promise是ES6中新增的异步编程解决方案, 在代码中的表现是一个对象
promise对象可以将异步操作以同步流程来表示, 避免了回调函数层层嵌套问题,避免了回调地狱问题