在b站上跟着黑马的视频学的,相应的后端的接口也是黑马写的,谢谢黑马,自己总结了一下,发出来了。
Promise是es6的新语法 专门用来处理异步的一个构造函数,本质上也是对象
1、promise的基本使用
promise可以用来处理回调地狱,先不说怎么处理回调地狱,先看一下promise的基本使用
在new实例对象的时候 以一个函数作为参数,这个函数有两个形参,分别是resolve和reject。resolve和reject是两个函数,特定条件下会触发这两个函数,响应成功调用resolve函数,失败调用reject函数
相应的实例对象通过then方法接受返回结果,then方法的第一个参数是一个函数,这个函数的形参接受,调用resolve函数时候的实参;第二个参数也是一个函数,他的形参接受,调用reject函数时候的实参
如图:
2、promise常用的API
(1)、实例方法
实例方法就是位于promise原型中的方法
如图:
另外还有一个关键字:throw也用于抛出程序的错误,reject方法是将参数传给处理错误的then里面相应的函数或者是catch方法,throw是将throw后面的自定义的错误信息传到对应的方法里面,作为实参,并且throw一旦执行,函数后面的代码就不会执行了
(2)、Promise这个对象上面的方法
如图:
3、Promise是解决回调地狱的一种方案
(1)、什么是回调地狱
异步调用结果之间如果存在依赖关系需要某些异步任务按一定的顺序执行
如图:
如果顺序写几个异步任务,有时候并不能让他们按一定的顺序执行。就像上面的第二个异步任务返回结果比其他的都晚一些
怎么样才能实现呢?
可以像下图一样实现
但是嵌套的层次多,代码就会看着比较乱,可读性很低,这种现象就叫做回调地狱
(2)、Promise解决回调地狱
如下图这次的代码比上面的代码更加简洁一些,变成了线型的