js异步编程
同步任务与异步任务
同步任务
任务依次执行,当一个任务耗时很长时,后面的任务都要排队,造成阻塞
异步任务
不会去等待这个任务的结束才开始下一个任务
开启过后就立即往后执行下一个任务
后续逻辑一般会通过回调函数的方式定义
帮助单线程的js语言同时处理大量的耗时任务
缺点:代码执行顺序混乱
异步的根基是回调函数
回调函数
由调用者定义,交给执行者执行的函数
EventLoop
就是在程序中设置两个线程,一个负责程序本身的运行,称为"主线程",另一个负责 主线程与其他进程的通信(主要是各种IO操作)的通信,被称为“Event Loop线程”
Promise
1.promise 就是一个类,在执行这个类的时候需要一个执行器进去,执行器会立即执行
2. promise 中有三种状态,分别为成功 fulfilled 失败 rejected 等待 pending
pending --> fulfiled
pending -> rejected
一旦状态确定就不可更改
3. resolve和reject函数是用来更改状态的
resolve: fulfilled
reject: rejected
4. then方法内部做的事情是判断状态,如果状态是成功,调用成功回调的函数,如果失败,调用失败的回调函数,then方法是被定义在原型对象中
5. then成功回调有一个参数,表示成功之后的值, then失败回调有一个参数,表示失败后的原因
6. 同一个promise对象下面的then方法是可以被调用多次的,(所以then要返回一个promise对象)
7. then方法是可以被链式调用的,后面then方法的回调函数拿到值的是上一个then方法的回调函数的返回值