js复习总结(三)--promise问题

68 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 5 天,点击查看活动详情

书接上文,接着复习JS

22.promise的内部原理是什么?它的优缺点是什么?

Promise对象,封装了一个异步操作并且还可以获取成功或失败的结果

Promise主要就是解决回调地狱的问题,之前如果异步任务比较多,同时他们之间有相互依赖的关系,就只能使用回调函数处理,这样就容易形成回调地狱,代码的可读性差,可维护性也很差

回调地狱

一般来说我们会碰到的回调嵌套都不会很多,一般就一到两级,但是某些情况下,回调嵌套很多时,代码就会非常繁琐,会给我们的编程带来很多的麻烦,这种情况就是回调地狱。

三种状态pending初始状态fulfilled成功状态rejected失败状态

状态改变只会有两种情况,

  • pending -> fulfilled;
  • pending -> rejected;

一旦发生,状态就会凝固,不会再变

首先就是我们无法取消promise,一旦创建它就会立即执行,不能中途取消,如果不设置回调,promise内部抛出的测u哦呜就无法反馈到外面,若当前处于pending状态时,无法得知目前在哪个阶段。

原理:

构造一个Promise实例,实例需要传递函数的参数,这个函数有两个形参,分别都是函数类型,一个是resolve一个是reject。

promise上还有then方法,这个方法就是来指定状态改变时的确定操作,resolve是执行第一个函数,reject是执行第二个函数。

23.promise和async await的区别是什么?

  • 1.都是处理异步请求的方式
  • 2.promise是ES6, async-await 是ES7的语法
  • 3.async await是基于promise实现的,他和promise都是非阻塞性的

优缺点:

  • 1.promise是返回对象我们要用then,catch方法去处理和捕获异常,并且书写方式是链式,容易造成代码重叠,不好维护,async await是通过tra catch进行捕获异常
  • 2.async await最大的优点就是能让代码看起来像同步一样,只要遇到await就会立刻返回结果,然后再执行后面的操作promise.then()的方式返回,会出现请求还没返回,就执行了后面的操作

未完待续……

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 5 天,点击查看活动详情