并发并行、回调函数、Promise

262 阅读2分钟

并发与并行的区别

并发是宏观概念,我分别有任务 A 和任务 B,在这段时间内通过任务间的切换完成了这两个任务,这种情况就可以称之为并发。

并行是微观概念,假设 CPU 中存在两个核心,那么我就可以同时完成任务 A、B。同时完成多个任务的情况就可以称之为并行。

回调函数

回调函数就是一个通过函数指针调用的函数,用以处理异步参数请求,把函数内部的值返回到函数外部。

回调地狱

回调函数是异步的,每一层的回调函数都需要依赖上一层的回调执行完,所以形成了层层嵌套的关系最终形成回调地狱。

Promise

一、 Promise对象有三种状态

pending: 等待中、进行中

resolved(Fulfilled): 已经完成,表示得到想要的结果,可以继续往下执行

rejected: 得到结果,但是结果并非所愿,因此拒绝执行

这三种状态不受外界影响,而且状态只能从pending改变为resolved或者rejected,并且不可逆。在Promise对象的构造函数中,将一个函数作为第一个参数。而这个函数,就是用来处理Promise的状态变化。

二、 Promise对象中的then方法

可以接收构造函数中处理的状态变化,并分别对应执行。then方法有2个参数,第一个函数接收resolved状态的执行,第二个参数接收reject状态的执行。

三、Promise.all

Promise.all接收一个Promise对象组成的数组作为参数,当这个数组所有的Promise对象状态都变成resolved或者rejected的时候,它才会去调用then方法。

四、Promise.race

与Promise.all相似的是,Promise.race都是以一个Promise对象组成的数组作为参数,不同的是,只要当数组中的其中一个Promsie状态变成resolved或者rejected时,就可以调用.then方法了。