Promise对象,封装了一个异步操作并且还可以获取成功或失败的结果 Promise主要就是解决回调地狱的问题,之前如果异步任务比较多, 同时他们之间有相互依赖的关系, 就只能使用回调函数处理,这样就容易形成回调地狱,代码的可读性差,可维护性也很差 有三种状态:pending初始状态 fulfilled成功状态 rejected失败状态 状态改变只会有两种情况, pending - > fulfilled; pending - > rejected一旦发生, 状态就会凝固, 不会再变 首先就是我们无法取消 promise,一旦创建它就会立即执行,不能中途取消 如果不设置回调,promise内部抛出的测u哦呜就无法反馈到外面 若当前处于 pending状态时,无法得知目前在哪个阶段。 原理: 构造一个 Promise实例,实例需要传递函数的参数,这个函数有两个形参,分别都是函数类型,一个是 resolve一个是 reject promise上还有 then方法,这个方法就是来指定状态改变时的确定操作,resolve是执行第一个函数,reject是执行第二个函数 promise和async await的区别是什么? 1.都是处理异步请求的方式 2. promise是ES6, async await 是ES7的语法 3. async await是基于promise实现的,他和promise都是非阻塞性的优缺点:
- promise是返回对象我们要用then, catch方法去处理和捕获异常,并且书写方式是链式,容易造成代码重叠,不好维护, async await 是通过tra catch进行捕获异常
- async await最大的优点就是能让代码看起来像同步一样,只要遇到await就会立刻返回结果,然后再执行后面的操作promise. then()的方式返回,会出现请求还没返回,就执行了后面的操作