**
了解一下Promise,async,await
**
什么是Promise
1.主要用于异步计算
2.可以将异步操作队列化,按照期望的顺序执行,返回符合预期的结果
3.可以在对象之间传递和操作promise,帮助我们处理队列
异步操作的常见语法
1.事件监听
2.回调
3.异步回调的问题
1.之前处理异步是通过纯粹的回调函数的形式进行处理
2.很容易进入到回调地狱中,剥夺了函数return的能力
3.问题可以解决,但是难以读懂,维护困难
4.稍有不慎就会踏入回调地狱 - 嵌套层次深,不好维护
4.promise详解
1.resolve作用是,将Promise对象的状态从“未完成”变为“成功”(即从 pending 变为 resolved),在异步操作成功时调用,并将异步操作的结果,作为参数传递出去;
2.reject作用是,将Promise对象的状态从“未完成”变为“失败”(即从 pending 变为 rejected),在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。
3promise有三个状态:
1、pending[待定]初始状态
2、fulfilled[实现]操作成功
3、rejected[被否决]操作失败
什么是async和await
1.async 和 await 是干什么的
1.任意一个名称都是有意义的,先从字面意思来理解。async 是“异步”的简写,而 await 可以认为是 async wait 的简写。所以应该很好理解 async 用于申明一个 function 是异步的,而 await 用于等待一个异步方法执行完成。
2.如果需要通过 await 来调用一个 async 函数,那这个调用的外面必须得再包一个 async 函数,然后……进入死循环,这辈子都出不来
如果asycn里的代码都是同步的,那么这个函数被调用就会同步执行
如果在await后面接的这个promsie都是同步的,后面的promise会同步执行,但是拿到这个值还是得等待(特别注意:如果promise没有一个成功的值传入,对await来说就算是失败了,下面的代码就不会执行),所以不管await后面的代码是同步还是异步,await总是需要时间,从右向左执行,先执行右侧的代码,执行完后,发现有await关键字,于是让出线程,阻塞代码
使用await
1.await是直接获取多个promise的结果的,因为Promise.all()返回的也是一个promise所以如果要使用await拿到多个promise的值,可以直接await Promise.all()